[richfaces-svn-commits] JBoss Rich Faces SVN: r2299 - in trunk: framework/impl/src/main/java/org/richfaces/model and 18 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Thu Aug 16 12:08:29 EDT 2007
Author: maksimkaszynski
Date: 2007-08-16 12:08:29 -0400 (Thu, 16 Aug 2007)
New Revision: 2299
Added:
trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataModel.java
trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataRange.java
trunk/samples/scrollableDataTableDemo/
trunk/ui/scrollableDataTable/src/main/config/component/scrollable-data-table.xml
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/main/java/org/richfaces/renderkit/html/ScrollableDataTableHeaderRendererBase.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableOptions.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableRendererState.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableScrollData.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableUtils.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconBasic.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortAsc.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortDesc.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSplit.java
trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/scrollable-data-table.xcss
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-cell.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-footer-cell.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-cell.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-itself.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java
Removed:
trunk/framework/api/src/main/java/org/richfaces/model/GridDataModel.java
trunk/framework/api/src/main/java/org/richfaces/model/ScrollableGridRange.java
trunk/samples/scrollable-grid-demo/
trunk/ui/scrollableDataTable/src/main/config/component/scrollable-grid.xml
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableGrid.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridHeaderRendererBase.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridRendererState.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridUtils.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconBasic.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortAsc.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortDesc.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSplit.java
trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-cell.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-itself.jspx
trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid.jspx
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/HtmlScrollableGridComponentTest.java
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableGridRendererTest.java
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/taglib/ScrollableGridTagTest.java
Modified:
trunk/framework/impl/src/main/java/org/richfaces/model/DataModelCache.java
trunk/framework/impl/src/main/java/org/richfaces/model/impl/ArrayDataModel.java
trunk/framework/impl/src/main/java/org/richfaces/model/impl/ListDataModel.java
trunk/framework/impl/src/main/java/org/richfaces/model/impl/SimpleGridDataModel.java
trunk/samples/scrollableDataTableDemo/pom.xml
trunk/samples/scrollableDataTableDemo/src/main/java/org/richfaces/demo/datagrid/bean/ChannelDataModel2.java
trunk/samples/scrollableDataTableDemo/src/main/webapp/WEB-INF/web.xml
trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/columns.xhtml
trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid1.xhtml
trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid2.xhtml
trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid3.xhtml
trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/scrollable-grid.xhtml
trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/test.xhtml
trunk/ui/scrollableDataTable/generatescript.xml
trunk/ui/scrollableDataTable/pom.xml
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/MultiColumnSortListener.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/SingleColumnSortListener.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnIterator.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnVisitor.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ContextualColumnVisitor.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ExtendedColumnVisitor.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SelectionRendererContributor.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SortIconRenderer.java
trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js
trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js
trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/Selection.js
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/SelectionRendererContributorTest.java
Log:
RF-605
Deleted: trunk/framework/api/src/main/java/org/richfaces/model/GridDataModel.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/GridDataModel.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/framework/api/src/main/java/org/richfaces/model/GridDataModel.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,207 +0,0 @@
-/**
- *
- */
-package org.richfaces.model;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.faces.context.FacesContext;
-
-import org.ajax4jsf.model.DataVisitor;
-import org.ajax4jsf.model.ExtendedDataModel;
-import org.ajax4jsf.model.Range;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Base class for data models
- * Subclasses must implement {@link #loadData(int, int, SortOrder)}
- * For certain features (like selection and sorting) to work correctly together,
- * both {@link #getId(Object)} and {@link #getObjectById(Object)}
- * methods need to be overriden
- *
- * @author Maksim Kaszynski
- *
- */
-public abstract class GridDataModel extends ExtendedDataModel {
-
- /**
- * Simple implementation - index-based row key
- * @author Maksim Kaszynski
- *
- */
- private static class SimpleRowKey implements Serializable{
-
- private static final long serialVersionUID = 1L;
- private int i;
-
- public SimpleRowKey(int i) {
- super();
- this.i = i;
- }
-
- public int intValue() {
- return i;
- }
-
- public String toString() {
- return String.valueOf(i);
- }
- }
-
-
- private static final Log log = LogFactory.getLog(GridDataModel.class);
-
- private Object rowKey;
-
- private Map mapping;
-
- private SortOrder lastSortOrder;
-
- /**
- * Load range of data items from the source.
- * Starting from startRow, and up to but excluding endRow
- * @param startRow
- * @param endRow
- * @param sortOrder
- * @return list of ordered data
- */
- public abstract List loadData(int startRow, int endRow, SortOrder sortOrder);
-
-
- /**
- * Load data range, and iterate over it
- */
- public void walk(FacesContext context, DataVisitor visitor, Range range,
- Object argument) throws IOException {
-
- if (log.isTraceEnabled()) {
- log.trace("Starting walk");
- }
-
- ScrollableGridRange sequenceRange = (ScrollableGridRange) range;
-
- int startIndex = sequenceRange.getFirst();
- int last = sequenceRange.getLast();
-
- lastSortOrder = sequenceRange.getSortOrder();
-
- List objects = loadData(startIndex, last, lastSortOrder);
-
- mapping = new HashMap();
-
- for (int i = 0; i < objects.size(); i++,startIndex++) {
- Object data = objects.get(i);
- Object key = getId(data);
-
- if (key == null) {
- key = new SimpleRowKey(startIndex);
- }
-
- mapping.put(key, data);
-
- visitor.process(context, key, argument);
-
- }
-
- if (log.isTraceEnabled()) {
- log.trace("Ending walk");
- }
-
- }
-
-
- /**
- * This method is the reverse of {@link #getId(Object)}
- * If you override this method, you need to override {@link #getId(Object)} as well
- * @param id
- * @return
- */
- public Object getObjectById(Object id) {
-
- if (id instanceof SimpleRowKey) {
- int i = ((SimpleRowKey) id).intValue();
-
- List l = loadData(i, i + 1, lastSortOrder);
-
- return l.get(0);
-
- }
-
- return null;
- }
-
- /**
- * Implementations may override it to provide domain-specific searches
- * Id should be serializable
- * Default implementation returns <code>null</code> anyway
- * If you override this method, you need to override {@link #getObjectById(Object)} as well
- * @param o
- * @return
- */
- public Object getId(Object o) {
- return null;
- }
-
-
- public Object getRowData() {
-
- if (mapping != null && mapping.containsKey(rowKey)) {
- return mapping.get(rowKey);
- } else {
- return loadAndMap(rowKey);
- }
-
- }
-
- /**
- * Row indexes navigation is no longer supported
- */
- public int getRowIndex() {
- throw new UnsupportedOperationException("getRowIndex");
- }
-
- /**
- * Quite simple implementation - data will be cached, so the call will be cheap
- */
- public boolean isRowAvailable() {
- return getRowData() != null;
- }
-
- /**
- * Row indexes navigation is no longer supported
- */
- public void setRowIndex(int arg0) {
- throw new UnsupportedOperationException("setRowIndex");
- }
-
- public Object getRowKey() {
- return rowKey;
- }
-
- public void setRowKey(Object key) {
- rowKey = key;
- }
-
- private Object loadAndMap(Object id) {
-
- if (log.isTraceEnabled()) {
- log.trace("loadAndMap " + id);
- }
-
- Object o = getObjectById(id);
- if (o != null) {
- if (mapping == null) {
- mapping = new HashMap();
- }
- mapping.put(id, o);
- }
- return o;
- }
-
-
-}
Deleted: trunk/framework/api/src/main/java/org/richfaces/model/ScrollableGridRange.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/ScrollableGridRange.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/framework/api/src/main/java/org/richfaces/model/ScrollableGridRange.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,92 +0,0 @@
-/*
- * Copyright
- * Copyright (c) Exadel,Inc. 2006
- * All rights reserved.
- *
- * History
- * $Source: /cvs-master/intralinks-jsf-comps/components/data-view-grid/src/component/com/exadel/jsf/model/ScrollableGridRange.java,v $
- * $Revision: 1.7 $
- */
-
-package org.richfaces.model;
-
-import java.io.Serializable;
-
-import org.ajax4jsf.model.Range;
-
-/**
- * Iteration range for Scrollable Grid
- * @author Maksim Kaszynski
- * @modified by Anton Belevich
- */
-public class ScrollableGridRange implements Range, Serializable{
-
- private static final long serialVersionUID = -6675002421400464892L;
-
- private int first = 0;
- private int last = 0;
- private SortOrder sortOrder;
-
- public ScrollableGridRange(int first, int last, SortOrder sortOrder) {
- super();
- this.first = first;
- this.last = last;
- this.sortOrder = sortOrder;
- }
-
- /**
- * @return the bufferSize
- */
- public int getLast() {
- return last;
- }
- /**
- * @param bufferSize the bufferSize to set
- */
- public void setLast(int lastRow) {
- this.last = lastRow;
- }
- /**
- * @return the first
- */
- public int getFirst() {
- return first;
- }
- /**
- * @param first the first to set
- */
- public void setFirst(int first) {
- this.first = first;
- }
-
- public SortOrder getSortOrder() {
- return sortOrder;
- }
-
- public void setSortOrder(SortOrder sortOrder) {
- this.sortOrder = sortOrder;
- }
-
- public boolean equals(Object obj) {
-
- if(!(obj instanceof ScrollableGridRange)){
- return super.equals(obj);
- }
-
- ScrollableGridRange ref = (ScrollableGridRange)obj;
-
- boolean ret = (this.first == ref.first)&&(this.last == ref.last );
-
- if(this.sortOrder != null){
- ret = ret && this.sortOrder.equals(ref.sortOrder);
- } else {
- ret = (ret && (ref.sortOrder == null));
- }
-
- return ret;
- }
-
- public int hashCode() {
- return super.hashCode();
- }
-}
Added: trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataModel.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataModel.java (rev 0)
+++ trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataModel.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,207 @@
+/**
+ *
+ */
+package org.richfaces.model;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.model.ExtendedDataModel;
+import org.ajax4jsf.model.Range;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Base class for data models
+ * Subclasses must implement {@link #loadData(int, int, SortOrder)}
+ * For certain features (like selection and sorting) to work correctly together,
+ * both {@link #getId(Object)} and {@link #getObjectById(Object)}
+ * methods need to be overriden
+ *
+ * @author Maksim Kaszynski
+ *
+ */
+public abstract class ScrollableTableDataModel extends ExtendedDataModel {
+
+ /**
+ * Simple implementation - index-based row key
+ * @author Maksim Kaszynski
+ *
+ */
+ private static class SimpleRowKey implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+ private int i;
+
+ public SimpleRowKey(int i) {
+ super();
+ this.i = i;
+ }
+
+ public int intValue() {
+ return i;
+ }
+
+ public String toString() {
+ return String.valueOf(i);
+ }
+ }
+
+
+ private static final Log log = LogFactory.getLog(ScrollableTableDataModel.class);
+
+ private Object rowKey;
+
+ private Map mapping;
+
+ private SortOrder lastSortOrder;
+
+ /**
+ * Load range of data items from the source.
+ * Starting from startRow, and up to but excluding endRow
+ * @param startRow
+ * @param endRow
+ * @param sortOrder
+ * @return list of ordered data
+ */
+ public abstract List loadData(int startRow, int endRow, SortOrder sortOrder);
+
+
+ /**
+ * Load data range, and iterate over it
+ */
+ public void walk(FacesContext context, DataVisitor visitor, Range range,
+ Object argument) throws IOException {
+
+ if (log.isTraceEnabled()) {
+ log.trace("Starting walk");
+ }
+
+ ScrollableTableDataRange sequenceRange = (ScrollableTableDataRange) range;
+
+ int startIndex = sequenceRange.getFirst();
+ int last = sequenceRange.getLast();
+
+ lastSortOrder = sequenceRange.getSortOrder();
+
+ List objects = loadData(startIndex, last, lastSortOrder);
+
+ mapping = new HashMap();
+
+ for (int i = 0; i < objects.size(); i++,startIndex++) {
+ Object data = objects.get(i);
+ Object key = getId(data);
+
+ if (key == null) {
+ key = new SimpleRowKey(startIndex);
+ }
+
+ mapping.put(key, data);
+
+ visitor.process(context, key, argument);
+
+ }
+
+ if (log.isTraceEnabled()) {
+ log.trace("Ending walk");
+ }
+
+ }
+
+
+ /**
+ * This method is the reverse of {@link #getId(Object)}
+ * If you override this method, you need to override {@link #getId(Object)} as well
+ * @param id
+ * @return
+ */
+ public Object getObjectById(Object id) {
+
+ if (id instanceof SimpleRowKey) {
+ int i = ((SimpleRowKey) id).intValue();
+
+ List l = loadData(i, i + 1, lastSortOrder);
+
+ return l.get(0);
+
+ }
+
+ return null;
+ }
+
+ /**
+ * Implementations may override it to provide domain-specific searches
+ * Id should be serializable
+ * Default implementation returns <code>null</code> anyway
+ * If you override this method, you need to override {@link #getObjectById(Object)} as well
+ * @param o
+ * @return
+ */
+ public Object getId(Object o) {
+ return null;
+ }
+
+
+ public Object getRowData() {
+
+ if (mapping != null && mapping.containsKey(rowKey)) {
+ return mapping.get(rowKey);
+ } else {
+ return loadAndMap(rowKey);
+ }
+
+ }
+
+ /**
+ * Row indexes navigation is no longer supported
+ */
+ public int getRowIndex() {
+ throw new UnsupportedOperationException("getRowIndex");
+ }
+
+ /**
+ * Quite simple implementation - data will be cached, so the call will be cheap
+ */
+ public boolean isRowAvailable() {
+ return getRowData() != null;
+ }
+
+ /**
+ * Row indexes navigation is no longer supported
+ */
+ public void setRowIndex(int arg0) {
+ throw new UnsupportedOperationException("setRowIndex");
+ }
+
+ public Object getRowKey() {
+ return rowKey;
+ }
+
+ public void setRowKey(Object key) {
+ rowKey = key;
+ }
+
+ private Object loadAndMap(Object id) {
+
+ if (log.isTraceEnabled()) {
+ log.trace("loadAndMap " + id);
+ }
+
+ Object o = getObjectById(id);
+ if (o != null) {
+ if (mapping == null) {
+ mapping = new HashMap();
+ }
+ mapping.put(id, o);
+ }
+ return o;
+ }
+
+
+}
Added: trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataRange.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataRange.java (rev 0)
+++ trunk/framework/api/src/main/java/org/richfaces/model/ScrollableTableDataRange.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,92 @@
+/*
+ * Copyright
+ * Copyright (c) Exadel,Inc. 2006
+ * All rights reserved.
+ *
+ * History
+ * $Source: /cvs-master/intralinks-jsf-comps/components/data-view-grid/src/component/com/exadel/jsf/model/ScrollableTableDataRange.java,v $
+ * $Revision: 1.7 $
+ */
+
+package org.richfaces.model;
+
+import java.io.Serializable;
+
+import org.ajax4jsf.model.Range;
+
+/**
+ * Iteration range for Scrollable Grid
+ * @author Maksim Kaszynski
+ * @modified by Anton Belevich
+ */
+public class ScrollableTableDataRange implements Range, Serializable{
+
+ private static final long serialVersionUID = -6675002421400464892L;
+
+ private int first = 0;
+ private int last = 0;
+ private SortOrder sortOrder;
+
+ public ScrollableTableDataRange(int first, int last, SortOrder sortOrder) {
+ super();
+ this.first = first;
+ this.last = last;
+ this.sortOrder = sortOrder;
+ }
+
+ /**
+ * @return the bufferSize
+ */
+ public int getLast() {
+ return last;
+ }
+ /**
+ * @param bufferSize the bufferSize to set
+ */
+ public void setLast(int lastRow) {
+ this.last = lastRow;
+ }
+ /**
+ * @return the first
+ */
+ public int getFirst() {
+ return first;
+ }
+ /**
+ * @param first the first to set
+ */
+ public void setFirst(int first) {
+ this.first = first;
+ }
+
+ public SortOrder getSortOrder() {
+ return sortOrder;
+ }
+
+ public void setSortOrder(SortOrder sortOrder) {
+ this.sortOrder = sortOrder;
+ }
+
+ public boolean equals(Object obj) {
+
+ if(!(obj instanceof ScrollableTableDataRange)){
+ return super.equals(obj);
+ }
+
+ ScrollableTableDataRange ref = (ScrollableTableDataRange)obj;
+
+ boolean ret = (this.first == ref.first)&&(this.last == ref.last );
+
+ if(this.sortOrder != null){
+ ret = ret && this.sortOrder.equals(ref.sortOrder);
+ } else {
+ ret = (ret && (ref.sortOrder == null));
+ }
+
+ return ret;
+ }
+
+ public int hashCode() {
+ return super.hashCode();
+ }
+}
Modified: trunk/framework/impl/src/main/java/org/richfaces/model/DataModelCache.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/DataModelCache.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/DataModelCache.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -23,7 +23,7 @@
* @author Maksim Kaszynski
*
*/
-public class DataModelCache extends GridDataModel {
+public class DataModelCache extends ScrollableTableDataModel {
private static Log log = LogFactory.getLog(DataModelCache.class);
@@ -64,25 +64,25 @@
private DataRange dataRange;
- private GridDataModel gridDataModel;
+ private ScrollableTableDataModel scrollableTableDataModel;
private int rowCount = Integer.MIN_VALUE;
- public DataModelCache(GridDataModel gridDataModel) {
+ public DataModelCache(ScrollableTableDataModel scrollableTableDataModel) {
super();
- this.gridDataModel = gridDataModel;
+ this.scrollableTableDataModel = scrollableTableDataModel;
if (log.isTraceEnabled()) {
- log.trace("initializing with " + gridDataModel);
+ log.trace("initializing with " + scrollableTableDataModel);
}
}
public void addDataModelListener(DataModelListener listener) {
- gridDataModel.addDataModelListener(listener);
+ scrollableTableDataModel.addDataModelListener(listener);
}
public DataModelListener[] getDataModelListeners() {
- return gridDataModel.getDataModelListeners();
+ return scrollableTableDataModel.getDataModelListeners();
}
public Object getObjectById(Object id) {
@@ -100,7 +100,7 @@
log.debug("Cache miss " + id + " falling back to original model");
}
- cached = gridDataModel.getObjectById(id);
+ cached = scrollableTableDataModel.getObjectById(id);
secondaryMapping.put(id, cached);
}
@@ -114,7 +114,7 @@
public int getRowCount() {
if (rowCount == Integer.MIN_VALUE) {
- rowCount = gridDataModel.getRowCount();
+ rowCount = scrollableTableDataModel.getRowCount();
}
return rowCount;
}
@@ -129,19 +129,19 @@
}
public int getRowIndex() {
- return gridDataModel.getRowIndex();
+ return scrollableTableDataModel.getRowIndex();
}
public Object getRowKey() {
- return gridDataModel.getRowKey();
+ return scrollableTableDataModel.getRowKey();
}
public SerializableDataModel getSerializableModel(Range range) {
- return gridDataModel.getSerializableModel(range);
+ return scrollableTableDataModel.getSerializableModel(range);
}
public Object getWrappedData() {
- return gridDataModel.getWrappedData();
+ return scrollableTableDataModel.getWrappedData();
}
public boolean isRowAvailable() {
@@ -150,31 +150,31 @@
public List loadData(int startRow, int endRow, SortOrder sortOrder) {
if (dataRange == null || !dataRange.match(startRow, endRow, sortOrder)) {
- List data = gridDataModel.loadData(startRow, endRow, sortOrder);
+ List data = scrollableTableDataModel.loadData(startRow, endRow, sortOrder);
dataRange = new DataRange(startRow, endRow, sortOrder, data);
}
return dataRange.loadedData;
}
public void removeDataModelListener(DataModelListener listener) {
- gridDataModel.removeDataModelListener(listener);
+ scrollableTableDataModel.removeDataModelListener(listener);
}
public void setRowIndex(int arg0) {
- gridDataModel.setRowIndex(arg0);
+ scrollableTableDataModel.setRowIndex(arg0);
}
public void setRowKey(Object key) {
- gridDataModel.setRowKey(key);
+ scrollableTableDataModel.setRowKey(key);
super.setRowKey(key);
}
public void setWrappedData(Object arg0) {
- gridDataModel.setWrappedData(arg0);
+ scrollableTableDataModel.setWrappedData(arg0);
}
public Object getId(Object o) {
- return gridDataModel.getId(o);
+ return scrollableTableDataModel.getId(o);
}
public void walk(FacesContext context, DataVisitor visitor, Range range,
Modified: trunk/framework/impl/src/main/java/org/richfaces/model/impl/ArrayDataModel.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/impl/ArrayDataModel.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/impl/ArrayDataModel.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -30,7 +30,7 @@
/* (non-Javadoc)
- * @see org.richfaces.model.GridDataModel#loadData(int, int, org.richfaces.model.SortOrder)
+ * @see org.richfaces.model.ScrollableTableDataModel#loadData(int, int, org.richfaces.model.SortOrder)
*/
public List loadData(int startRow, int endRow, SortOrder sortOrder) {
Modified: trunk/framework/impl/src/main/java/org/richfaces/model/impl/ListDataModel.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/impl/ListDataModel.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/impl/ListDataModel.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -30,7 +30,7 @@
/* (non-Javadoc)
- * @see org.richfaces.model.GridDataModel#loadData(int, int, org.richfaces.model.SortOrder)
+ * @see org.richfaces.model.ScrollableTableDataModel#loadData(int, int, org.richfaces.model.SortOrder)
*/
public List loadData(int startRow, int endRow, SortOrder sortOrder) {
Modified: trunk/framework/impl/src/main/java/org/richfaces/model/impl/SimpleGridDataModel.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/impl/SimpleGridDataModel.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/impl/SimpleGridDataModel.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -2,10 +2,10 @@
import java.util.Comparator;
-import org.richfaces.model.GridDataModel;
+import org.richfaces.model.ScrollableTableDataModel;
import org.richfaces.model.SortOrder;
-public abstract class SimpleGridDataModel extends GridDataModel {
+public abstract class SimpleGridDataModel extends ScrollableTableDataModel {
protected Comparator createComparator(SortOrder sortOrder) {
return new PropertyResolverComparator(sortOrder);
Copied: trunk/samples/scrollableDataTableDemo (from rev 2291, trunk/samples/scrollable-grid-demo)
Modified: trunk/samples/scrollableDataTableDemo/pom.xml
===================================================================
--- trunk/samples/scrollable-grid-demo/pom.xml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/pom.xml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -7,15 +7,15 @@
<version>3.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>scrollable-grid-demo</artifactId>
+ <artifactId>scrollableDataTableDemo</artifactId>
<groupId>org.richfaces.samples</groupId>
<version>3.1.0-SNAPSHOT</version>
<packaging>war</packaging>
- <name>scrollable-grid-demo Maven Webapp</name>
+ <name>scrollableDataTable Maven Webapp</name>
<dependencies>
<dependency>
<groupId>org.richfaces.ui</groupId>
- <artifactId>scrollable-grid</artifactId>
+ <artifactId>scrollableDataTable</artifactId>
<version>3.1.0-SNAPSHOT</version>
</dependency>
<dependency>
Modified: trunk/samples/scrollableDataTableDemo/src/main/java/org/richfaces/demo/datagrid/bean/ChannelDataModel2.java
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/java/org/richfaces/demo/datagrid/bean/ChannelDataModel2.java 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/java/org/richfaces/demo/datagrid/bean/ChannelDataModel2.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -10,14 +10,14 @@
import org.richfaces.demo.datagrid.model.Channel;
import org.richfaces.demo.datagrid.model.Issue;
import org.richfaces.demo.datagrid.model.Key;
-import org.richfaces.model.GridDataModel;
+import org.richfaces.model.ScrollableTableDataModel;
import org.richfaces.model.SortOrder;
/**
* @author Maksim Kaszynski
*
*/
-public class ChannelDataModel2 extends GridDataModel {
+public class ChannelDataModel2 extends ScrollableTableDataModel {
private final Log log = LogFactory.getLog(ChannelDataModel2.class);
Modified: trunk/samples/scrollableDataTableDemo/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/webapp/WEB-INF/web.xml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/webapp/WEB-INF/web.xml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <display-name>Archetype Created Web Application</display-name>
+ <display-name>scrollableDataTableDemo</display-name>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
<param-value>false</param-value>
Modified: trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/columns.xhtml
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/webapp/pages/columns.xhtml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/columns.xhtml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -3,7 +3,7 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollable-grid"
+ xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollableDataTable"
xmlns:dt="http://labs.jboss.com/jbossrichfaces/ui/dataTable">
<ui:composition>
Modified: trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid1.xhtml
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/webapp/pages/grid1.xhtml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid1.xhtml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -3,14 +3,14 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollable-grid">
+ xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollableDataTable">
<ui:composition>
- <sg:scrollable-grid value="#{modelBuilder.model1}" var="issues"
+ <sg:scrollableDataTable value="#{modelBuilder.model1}" var="issues"
frozenColCount="3" first="0" rows="40" width="100%" height="500px">
<ui:include src="columns.xhtml">
<ui:param name="issues" value="#{issues}" />
</ui:include>
- </sg:scrollable-grid>
+ </sg:scrollableDataTable>
</ui:composition>
</jsp:root>
Modified: trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid2.xhtml
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/webapp/pages/grid2.xhtml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid2.xhtml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -3,14 +3,14 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollable-grid">
+ xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollableDataTable">
<ui:composition>
- <sg:scrollable-grid value="#{modelBuilder.model2}" var="issues"
+ <sg:scrollableDataTable value="#{modelBuilder.model2}" var="issues"
frozenColCount="3" first="0" rows="40" width="100%" height="500px">
<ui:include src="columns.xhtml">
<ui:param name="issues" value="#{issues}" />
</ui:include>
- </sg:scrollable-grid>
+ </sg:scrollableDataTable>
</ui:composition>
</jsp:root>
Modified: trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid3.xhtml
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/webapp/pages/grid3.xhtml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/grid3.xhtml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -3,14 +3,14 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollable-grid">
+ xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollableDataTable">
<ui:composition>
- <sg:scrollable-grid value="#{modelBuilder.model3}" var="issues"
+ <sg:scrollableDataTable value="#{modelBuilder.model3}" var="issues"
frozenColCount="3" first="0" rows="40" width="100%" height="500px">
<ui:include src="columns.xhtml">
<ui:param name="issues" value="#{issues}" />
</ui:include>
- </sg:scrollable-grid>
+ </sg:scrollableDataTable>
</ui:composition>
</jsp:root>
Modified: trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/scrollable-grid.xhtml
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/webapp/pages/scrollable-grid.xhtml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/scrollable-grid.xhtml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -4,7 +4,7 @@
xmlns:c="http://java.sun.com/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollable-grid"
+ xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollableDataTable"
xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
xmlns:dt="http://labs.jboss.com/jbossrichfaces/ui/dataTable"
@@ -22,7 +22,7 @@
line-height:normal;
}
- .rich-sgrid-row {
+ .rich-sdt-row {
height: 30px;
}
@@ -40,7 +40,7 @@
<c:set var="renderFooter" value="#{true}"/>
- <sg:scrollable-grid value="#{dataModel2}"
+ <sg:scrollableDataTable value="#{dataModel2}"
var="issues"
frozenColCount="3"
first="0"
@@ -182,7 +182,7 @@
</f:facet>
</c:if>
</dt:column>
- </sg:scrollable-grid>
+ </sg:scrollableDataTable>
<h:commandButton value="submit"></h:commandButton>
<h:messages showDetail="true"/>
</h:form>
Modified: trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/test.xhtml
===================================================================
--- trunk/samples/scrollable-grid-demo/src/main/webapp/pages/test.xhtml 2007-08-16 12:54:25 UTC (rev 2291)
+++ trunk/samples/scrollableDataTableDemo/src/main/webapp/pages/test.xhtml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -3,7 +3,7 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollable-grid"
+ xmlns:sg="http://labs.jboss.com/jbossrichfaces/ui/scrollableDataTable"
xmlns:a4j="http://richfaces.org/a4j">
<body>
<f:view>
Modified: trunk/ui/scrollableDataTable/generatescript.xml
===================================================================
--- trunk/ui/scrollableDataTable/generatescript.xml 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/generatescript.xml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -17,7 +17,7 @@
<target name="merge-scripts-eclipse-3.3">
<property name="script-path" value="org/richfaces/renderkit/html/scripts"></property>
- <property name="gen-script-name" value="scrollable-grid.js"></property>
+ <property name="gen-script-name" value="scrollable-data-table.js"></property>
<property name="gen-script-full-name" value="${target-dir}/${script-path}/${gen-script-name}"></property>
<concat append="false" binary="false" destfile="${gen-script-full-name}">
<filelist dir="${resources-dir}">
@@ -51,7 +51,7 @@
<target name="merge-scripts">
<property name="script-path" value="org/richfaces/renderkit/html/scripts"></property>
- <property name="gen-script-name" value="scrollable-grid.js"></property>
+ <property name="gen-script-name" value="scrollable-data-table.js"></property>
<property name="gen-script-full-name" value="${target-dir}/${script-path}/${gen-script-name}"></property>
<concat append="false" binary="false" destfile="${gen-script-full-name}">
<filelist dir="${resources-dir}">
Modified: trunk/ui/scrollableDataTable/pom.xml
===================================================================
--- trunk/ui/scrollableDataTable/pom.xml 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/pom.xml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -6,9 +6,9 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.richfaces.ui</groupId>
- <artifactId>scrollable-grid</artifactId>
+ <artifactId>scrollableDataTable</artifactId>
<version>3.1.0-SNAPSHOT</version>
- <name>Scrollable Grid</name>
+ <name>Scrollable Data Table</name>
<build>
<plugins>
<plugin>
Added: trunk/ui/scrollableDataTable/src/main/config/component/scrollable-data-table.xml
===================================================================
--- trunk/ui/scrollableDataTable/src/main/config/component/scrollable-data-table.xml (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/config/component/scrollable-data-table.xml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" "https://ajax4jsf.dev.java.net/nonav/dtds/component-config.dtd" >
+<components>
+ <component>
+ <name>org.richfaces.component.ScrollableDataTable</name>
+ <family>org.richfaces.component.ScrollableDataTable</family>
+ <classname>
+ org.richfaces.component.html.HtmlScrollableDataTable
+ </classname>
+ <superclass>org.richfaces.component.UIScrollableDataTable</superclass>
+<!--
+ <test>
+ <classname>org.richfaces.component.html.HtmlScrollableGridTest</classname>
+ <superclassname>org.ajax4jsf.tests.AbstractAjax4JsfTestCase</superclassname>
+ </test>
+-->
+ <description>
+ <![CDATA[ Scrollable Data Table ]]>
+ </description>
+
+ <renderer generate="true" override="true">
+ <name>org.richfaces.renderkit.html.ScrollableDataTableRenderer</name>
+ <template>org/richfaces/scrollable-data-table.jspx</template>
+ </renderer>
+ <tag>
+ <name>scrollableDataTable</name>
+ <classname>org.richfaces.taglib.ScrollableDataTableTag</classname>
+ <superclass>
+ org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
+ </superclass>
+ <!--
+ <test>
+ <classname>org.richfaces.taglib.ScrollableDataTableTagTest</classname>
+ <superclassname>org.ajax4jsf.tests.AbstractAjax4JsfTestCase</superclassname>
+ </test>
+ -->
+ </tag>
+
+ <property>
+ <name>frozenColCount</name>
+ <classname>int</classname>
+ <description></description>
+ <defaultvalue>0</defaultvalue>
+ </property>
+
+ <property>
+ <name>height</name>
+ <classname>java.lang.String</classname>
+ <description>grid height</description>
+ <defaultvalue>"500px"</defaultvalue>
+ </property>
+
+ <property>
+ <name>width</name>
+ <classname>java.lang.String</classname>
+ <description>grid width</description>
+ <defaultvalue>"700px"</defaultvalue>
+ </property>
+ <property>
+ <name>rows</name>
+ <classname>int</classname>
+ <defaultvalue>40</defaultvalue>
+ </property>
+
+ <property>
+ <name>selectedClass</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>activeClass</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>columnClasses</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>rowClasses</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>footerClass</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>captionClass</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>headerClass</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>styleClass</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property>
+ <name>onselectionchange</name>
+ <classname>java.lang.String</classname>
+ </property>
+
+ <property attachedstate="true" hidden="true">
+ <name>sortOrder</name>
+ <classname>org.richfaces.model.SortOrder</classname>
+ </property>
+ <property attachedstate="true" hidden="true">
+ <name>selection</name>
+ <classname>org.richfaces.model.selection.Selection</classname>
+ </property>
+
+ <property>
+ <name>hideWhenScrolling</name>
+ <classname>boolean</classname>
+ <defaultvalue>false</defaultvalue>
+ </property>
+ &ui_component_attributes;
+ </component>
+
+ <renderer generate="true">
+ <template>org/richfaces/scrollable-data-table-cell.jspx</template>
+ </renderer>
+
+ <renderer generate="true">
+ <template>org/richfaces/scrollable-data-table-header-cell.jspx</template>
+ </renderer>
+
+ <renderer generate="true">
+ <template>org/richfaces/scrollable-data-table-footer-cell.jspx</template>
+ </renderer>
+
+ <renderer generate="true">
+ <template>org/richfaces/scrollable-data-table-header-itself.jspx</template>
+ </renderer>
+
+ <converter generate="false">
+ <classname>org.richfaces.convert.selection.ClientSelectionConverter</classname>
+ <forclass>org.richfaces.model.selection.ClientSelection</forclass>
+ </converter>
+
+</components>
\ No newline at end of file
Deleted: trunk/ui/scrollableDataTable/src/main/config/component/scrollable-grid.xml
===================================================================
--- trunk/ui/scrollableDataTable/src/main/config/component/scrollable-grid.xml 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/config/component/scrollable-grid.xml 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" "https://ajax4jsf.dev.java.net/nonav/dtds/component-config.dtd" >
-<components>
- <component>
- <name>org.richfaces.component.ScrollableGrid</name>
- <family>org.richfaces.component.ScrollableGrid</family>
- <classname>
- org.richfaces.component.html.HtmlScrollableGrid
- </classname>
- <superclass>org.richfaces.component.UIScrollableGrid</superclass>
-<!--
- <test>
- <classname>org.richfaces.component.html.HtmlScrollableGridTest</classname>
- <superclassname>org.ajax4jsf.tests.AbstractAjax4JsfTestCase</superclassname>
- </test>
--->
- <description>
- <![CDATA[ Scrollable Data Table ]]>
- </description>
-
- <renderer generate="true" override="true">
- <name>org.richfaces.renderkit.html.ScrollableGridRenderer</name>
- <template>org/richfaces/scrollable-grid.jspx</template>
- </renderer>
- <tag>
- <name>scrollableDataTable</name>
- <classname>org.richfaces.taglib.ScrollableGridTag</classname>
- <superclass>
- org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
- </superclass>
- <!--
- <test>
- <classname>org.richfaces.taglib.ScrollableGridTagTest</classname>
- <superclassname>org.ajax4jsf.tests.AbstractAjax4JsfTestCase</superclassname>
- </test>
- -->
- </tag>
-
- <property>
- <name>frozenColCount</name>
- <classname>int</classname>
- <description></description>
- <defaultvalue>0</defaultvalue>
- </property>
-
- <property>
- <name>height</name>
- <classname>java.lang.String</classname>
- <description>grid height</description>
- <defaultvalue>"500px"</defaultvalue>
- </property>
-
- <property>
- <name>width</name>
- <classname>java.lang.String</classname>
- <description>grid width</description>
- <defaultvalue>"700px"</defaultvalue>
- </property>
- <property>
- <name>rows</name>
- <classname>int</classname>
- <defaultvalue>40</defaultvalue>
- </property>
-
- <property>
- <name>selectedClass</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>activeClass</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>columnClasses</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>rowClasses</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>footerClass</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>captionClass</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>headerClass</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>styleClass</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property>
- <name>onselectionchange</name>
- <classname>java.lang.String</classname>
- </property>
-
- <property attachedstate="true" hidden="true">
- <name>sortOrder</name>
- <classname>org.richfaces.model.SortOrder</classname>
- </property>
- <property attachedstate="true" hidden="true">
- <name>selection</name>
- <classname>org.richfaces.model.selection.Selection</classname>
- </property>
-
- <property>
- <name>hideWhenScrolling</name>
- <classname>boolean</classname>
- <defaultvalue>false</defaultvalue>
- </property>
- &ui_component_attributes;
- </component>
-
- <renderer generate="true">
- <template>org/richfaces/scrollable-grid-cell.jspx</template>
- </renderer>
-
- <renderer generate="true">
- <template>org/richfaces/scrollable-grid-header-cell.jspx</template>
- </renderer>
-
- <renderer generate="true">
- <template>org/richfaces/scrollable-grid-footer-cell.jspx</template>
- </renderer>
-
- <renderer generate="true">
- <template>org/richfaces/scrollable-grid-header-itself.jspx</template>
- </renderer>
-
- <converter generate="false">
- <classname>org.richfaces.convert.selection.ClientSelectionConverter</classname>
- <forclass>org.richfaces.model.selection.ClientSelection</forclass>
- </converter>
-
-</components>
\ No newline at end of file
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableDataTable.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableDataTable.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableDataTable.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,402 @@
+/**
+ *
+ */
+package org.richfaces.component;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.FacesEvent;
+import javax.faces.event.PhaseId;
+
+import org.ajax4jsf.component.AjaxComponent;
+import org.ajax4jsf.component.UIDataAdaptor;
+import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.event.AjaxEvent;
+import org.ajax4jsf.model.DataComponentState;
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.model.ExtendedDataModel;
+import org.ajax4jsf.model.Range;
+import org.apache.commons.collections.iterators.IteratorChain;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.richfaces.event.AttributeHolder;
+import org.richfaces.event.ScrollableGridViewEvent;
+import org.richfaces.event.sort.MultiColumnSortListener;
+import org.richfaces.event.sort.SingleColumnSortListener;
+import org.richfaces.event.sort.SortEvent;
+import org.richfaces.event.sort.SortListener;
+import org.richfaces.model.DataModelCache;
+import org.richfaces.model.ScrollableTableDataModel;
+import org.richfaces.model.ScrollableTableDataRange;
+import org.richfaces.model.SortOrder;
+import org.richfaces.model.impl.ArrayDataModel;
+import org.richfaces.model.impl.ListDataModel;
+
+
+/**
+ * @author Anton Belevich
+ *
+ */
+
+public abstract class UIScrollableDataTable extends UIDataAdaptor implements AjaxComponent, Sortable, Selectable, ScriptExportable{
+
+
+ public static final String COMPONENT_TYPE = "org.richfaces.component.ScrollableDataTable";
+ public static final String SORT_SINGLE = "single";
+ public static final String SORT_MULTI = "multi";
+
+ private final static Log log = LogFactory.getLog(UIScrollableDataTable.class);
+
+ /**
+ * Flag set on each phase to determine what range of data to walk
+ * true means - locally saved ranges (for data pending update)
+ * false means - use range that comes from component state
+ */
+ private boolean useSavedRanges = true;
+
+ /**
+ * hold list of ranges previously accessed until updates are fully done for them
+ */
+ private List ranges;
+
+ private Collection responseData = new ArrayList();
+
+ private int reqRowsCount = -1;
+
+ private String scrollPos;
+
+ private SortListener sortListener;
+
+ public abstract SortOrder getSortOrder();
+
+ public abstract void setSortOrder(SortOrder sortOrder) ;
+
+ public Collection getResponseData() {
+ return responseData;
+ }
+
+ public void setResponseData(Collection responseData) {
+ this.responseData = responseData;
+ }
+
+ protected DataComponentState createComponentState() {
+
+ return new DataComponentState(){
+
+ public Range getRange() {
+
+ int curentRow = getFirst();
+
+ if(reqRowsCount == -1 ){
+ reqRowsCount = getRows();
+ }
+
+ int rows = reqRowsCount;
+
+ int rowsCount = getExtendedDataModel().getRowCount();
+
+ if(rows > 0){
+
+ rows += curentRow;
+
+ if(rows >=0){
+ rows = Math.min(rows, rowsCount);
+ }
+
+ } else if(rowsCount >=0 ){
+ rows = rowsCount;
+
+ } else {
+ rows = -1;
+ }
+
+ return new ScrollableTableDataRange(curentRow,rows, getSortOrder());
+ }
+ };
+ }
+
+
+ public void processDecodes(FacesContext faces) {
+
+ useSavedRanges = false;
+
+ if (log.isTraceEnabled()) {
+ log.trace("UIScrollableDataTable.processDecodes(faces)");
+ }
+ super.processDecodes(faces);
+ }
+
+ public void processValidators(FacesContext faces) {
+ useSavedRanges = true;
+ if (log.isTraceEnabled()) {
+ log.trace("UIScrollableDataTable.processValidators(faces)");
+ }
+ super.processValidators(faces);
+ }
+
+ public void processUpdates(FacesContext faces) {
+ useSavedRanges = true;
+
+ if (log.isTraceEnabled()) {
+ log.trace("UIScrollableDataTable.processUpdates(faces)");
+ }
+
+ super.processUpdates(faces);
+ ranges = null;
+ }
+
+ public void encodeBegin(FacesContext context) throws IOException {
+
+ if (log.isTraceEnabled()) {
+ log.trace("UIScrollableDataTable.encodeBegin(context)");
+ }
+
+ useSavedRanges = false;
+ super.encodeBegin(context);
+ }
+
+ protected ExtendedDataModel createDataModel() {
+
+ Object value = getValue();
+
+ ScrollableTableDataModel model = null;
+
+ if (value instanceof ScrollableTableDataModel) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Found instanceof " + value.getClass() + " will use it unwrapped");
+ }
+ model = (ScrollableTableDataModel) value;
+
+ } else if (value instanceof List) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Found instanceof " + value.getClass() + " - will wrap it into " + ListDataModel.class);
+ }
+
+ model = new ListDataModel((List) value);
+
+ }else if (value instanceof Object[]) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Found instanceof " + value.getClass() + " - will wrap it into " + ArrayDataModel.class);
+ }
+
+ model = new ArrayDataModel((Object[]) value);
+
+ } else if (value == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Found null value - will wrap it into empty " + ListDataModel.class);
+ }
+
+ model = new ListDataModel(Collections.EMPTY_LIST);
+ } else {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Found instanceof " + value.getClass() + " - will wrap it into singleton " + ListDataModel.class);
+ }
+
+ model = new ListDataModel(Collections.singletonList(value));
+ }
+
+ if (isCacheable()) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Initializing cache of type " + DataModelCache.class);
+ }
+
+ model = new DataModelCache(model);
+ }
+
+ return model;
+ }
+
+
+ public Object saveState(FacesContext context) {
+
+ Object values[] = new Object[4];
+ values[0] = super.saveState(context);
+ values[1] = ranges;
+ values[2] = scrollPos;
+ values[3] = saveAttachedState(context, sortListener);
+
+ return (Object)values;
+
+ }
+
+ public void restoreState(FacesContext context, Object state) {
+ Object values[] = (Object[])state;
+ super.restoreState(context, values[0]);
+ ranges = ((List)values[1]);
+ scrollPos = (String)values[2];
+ sortListener = (SortListener) restoreAttachedState(context, values[3]);
+ }
+
+ protected Iterator dataChildren() {
+
+ IteratorChain chain = new IteratorChain();
+ chain.addIterator(getFacets().values().iterator());
+ for (Iterator i = getChildren().iterator(); i.hasNext(); ) {
+ UIComponent kid = (UIComponent)i.next();
+ if (kid instanceof Column) {
+ chain.addIterator(kid.getChildren().iterator());
+ }
+ }
+
+ return chain;
+ }
+
+ protected Iterator fixedChildren() {
+
+ IteratorChain chain = new IteratorChain(getFacets().values().iterator());
+ for (Iterator i = getChildren().iterator(); i.hasNext(); ) {
+ UIComponent kid = (UIComponent)i.next();
+ if (kid instanceof Column) {
+ chain.addIterator(kid.getFacets().values().iterator());
+ }
+ }
+
+ return chain;
+ }
+
+ public void broadcast(FacesEvent event) throws AbortProcessingException {
+
+ super.broadcast(event);
+
+ if (event instanceof AttributeHolder) {
+ ((AttributeHolder) event).applyAttributes(this);
+ }
+
+ if(event instanceof AjaxEvent){
+ AjaxContext.getCurrentInstance().addComponentToAjaxRender(this);
+ }else if(event instanceof SortEvent){
+ processSortingChange(event);
+ // new AjaxEvent(this).queue();
+ }else if(event instanceof ScrollableGridViewEvent){
+ // new AjaxEvent(this).queue();
+ processScrolling(event);
+ }
+
+ }
+
+ protected boolean broadcastLocal(FacesEvent event) {
+ return super.broadcastLocal(event) || event instanceof SortEvent || event instanceof ScrollableGridViewEvent;
+ }
+
+ public void queueEvent(FacesEvent event) {
+
+ if(event instanceof AjaxEvent){
+ event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+ }else if(event instanceof SortEvent){
+ new AjaxEvent(this).queue();
+ event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+ }else if(event instanceof ScrollableGridViewEvent){
+ event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+ new AjaxEvent(this).queue();
+ }
+ super.queueEvent(event);
+ }
+
+ public void processScrolling(FacesEvent event){
+ ScrollableGridViewEvent e = (ScrollableGridViewEvent)event;
+
+ setFirst(e.getFirst());
+ reqRowsCount = e.getRows();
+
+ getFacesContext().renderResponse();
+ }
+
+ public void processSortingChange(FacesEvent event){
+
+ SortEvent e = (SortEvent)event;
+
+ getSortListener().processSort(e);
+
+ setFirst(e.getFirst());
+ reqRowsCount = e.getRows();
+
+
+ resetDataModel();
+
+ getFacesContext().renderResponse();
+ }
+
+ public void walk(FacesContext faces, DataVisitor visitor, Object argument) throws IOException {
+
+ Range visitedRange = getComponentState().getRange();
+
+ if(ranges == null){
+ ranges = new ArrayList();
+ }
+
+ if(!ranges.contains(visitedRange)){
+ ranges.add(visitedRange);
+ }
+
+ if(useSavedRanges){
+
+ for (Iterator iter = ranges.iterator(); iter.hasNext();) {
+ ScrollableTableDataRange range = (ScrollableTableDataRange) iter.next();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Range is: " + range.getFirst() + " - " + range.getLast() + " sortOrder: " + range.getSortOrder() );
+ }
+
+
+ getExtendedDataModel().walk(faces, visitor,range, argument);
+ }
+
+ }else{
+ super.walk(faces, visitor, argument);
+ }
+ }
+
+
+ public void encodeEnd(FacesContext context) throws IOException {
+ super.encodeEnd(context);
+ }
+
+ public boolean isCacheable() {
+ return true;
+ }
+
+ public String getScrollPos() {
+ return scrollPos;
+ }
+
+ public void setScrollPos(String scrollPos) {
+ this.scrollPos = scrollPos;
+ }
+
+ public SortListener getSortListener() {
+ if (sortListener != null) {
+ return sortListener;
+ }
+
+ if (SORT_MULTI.equals(getSortMode())) {
+
+ return MultiColumnSortListener.INSTANCE;
+
+ } else {
+
+ return SingleColumnSortListener.INSTANCE;
+
+ }
+ }
+
+ public void setSortListener(SortListener sortListener) {
+ this.sortListener = sortListener;
+ }
+
+ public abstract String getSortMode();
+ public abstract void setSortMode(String mode);
+
+}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableGrid.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableGrid.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableGrid.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,402 +0,0 @@
-/**
- *
- */
-package org.richfaces.component;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.FacesEvent;
-import javax.faces.event.PhaseId;
-
-import org.ajax4jsf.component.AjaxComponent;
-import org.ajax4jsf.component.UIDataAdaptor;
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.event.AjaxEvent;
-import org.ajax4jsf.model.DataComponentState;
-import org.ajax4jsf.model.DataVisitor;
-import org.ajax4jsf.model.ExtendedDataModel;
-import org.ajax4jsf.model.Range;
-import org.apache.commons.collections.iterators.IteratorChain;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.richfaces.event.AttributeHolder;
-import org.richfaces.event.ScrollableGridViewEvent;
-import org.richfaces.event.sort.MultiColumnSortListener;
-import org.richfaces.event.sort.SingleColumnSortListener;
-import org.richfaces.event.sort.SortEvent;
-import org.richfaces.event.sort.SortListener;
-import org.richfaces.model.DataModelCache;
-import org.richfaces.model.GridDataModel;
-import org.richfaces.model.ScrollableGridRange;
-import org.richfaces.model.SortOrder;
-import org.richfaces.model.impl.ArrayDataModel;
-import org.richfaces.model.impl.ListDataModel;
-
-
-/**
- * @author Anton Belevich
- *
- */
-
-public abstract class UIScrollableGrid extends UIDataAdaptor implements AjaxComponent, Sortable, Selectable, ScriptExportable{
-
-
- public static final String COMPONENT_TYPE = "org.richfaces.component.ScrollableGrid";
- public static final String SORT_SINGLE = "single";
- public static final String SORT_MULTI = "multi";
-
- private final static Log log = LogFactory.getLog(UIScrollableGrid.class);
-
- /**
- * Flag set on each phase to determine what range of data to walk
- * true means - locally saved ranges (for data pending update)
- * false means - use range that comes from component state
- */
- private boolean useSavedRanges = true;
-
- /**
- * hold list of ranges previously accessed until updates are fully done for them
- */
- private List ranges;
-
- private Collection responseData = new ArrayList();
-
- private int reqRowsCount = -1;
-
- private String scrollPos;
-
- private SortListener sortListener;
-
- public abstract SortOrder getSortOrder();
-
- public abstract void setSortOrder(SortOrder sortOrder) ;
-
- public Collection getResponseData() {
- return responseData;
- }
-
- public void setResponseData(Collection responseData) {
- this.responseData = responseData;
- }
-
- protected DataComponentState createComponentState() {
-
- return new DataComponentState(){
-
- public Range getRange() {
-
- int curentRow = getFirst();
-
- if(reqRowsCount == -1 ){
- reqRowsCount = getRows();
- }
-
- int rows = reqRowsCount;
-
- int rowsCount = getExtendedDataModel().getRowCount();
-
- if(rows > 0){
-
- rows += curentRow;
-
- if(rows >=0){
- rows = Math.min(rows, rowsCount);
- }
-
- } else if(rowsCount >=0 ){
- rows = rowsCount;
-
- } else {
- rows = -1;
- }
-
- return new ScrollableGridRange(curentRow,rows, getSortOrder());
- }
- };
- }
-
-
- public void processDecodes(FacesContext faces) {
-
- useSavedRanges = false;
-
- if (log.isTraceEnabled()) {
- log.trace("UIScrollableGrid.processDecodes(faces)");
- }
- super.processDecodes(faces);
- }
-
- public void processValidators(FacesContext faces) {
- useSavedRanges = true;
- if (log.isTraceEnabled()) {
- log.trace("UIScrollableGrid.processValidators(faces)");
- }
- super.processValidators(faces);
- }
-
- public void processUpdates(FacesContext faces) {
- useSavedRanges = true;
-
- if (log.isTraceEnabled()) {
- log.trace("UIScrollableGrid.processUpdates(faces)");
- }
-
- super.processUpdates(faces);
- ranges = null;
- }
-
- public void encodeBegin(FacesContext context) throws IOException {
-
- if (log.isTraceEnabled()) {
- log.trace("UIScrollableGrid.encodeBegin(context)");
- }
-
- useSavedRanges = false;
- super.encodeBegin(context);
- }
-
- protected ExtendedDataModel createDataModel() {
-
- Object value = getValue();
-
- GridDataModel model = null;
-
- if (value instanceof GridDataModel) {
-
- if (log.isDebugEnabled()) {
- log.debug("Found instanceof " + value.getClass() + " will use it unwrapped");
- }
- model = (GridDataModel) value;
-
- } else if (value instanceof List) {
-
- if (log.isDebugEnabled()) {
- log.debug("Found instanceof " + value.getClass() + " - will wrap it into " + ListDataModel.class);
- }
-
- model = new ListDataModel((List) value);
-
- }else if (value instanceof Object[]) {
-
- if (log.isDebugEnabled()) {
- log.debug("Found instanceof " + value.getClass() + " - will wrap it into " + ArrayDataModel.class);
- }
-
- model = new ArrayDataModel((Object[]) value);
-
- } else if (value == null) {
- if (log.isDebugEnabled()) {
- log.debug("Found null value - will wrap it into empty " + ListDataModel.class);
- }
-
- model = new ListDataModel(Collections.EMPTY_LIST);
- } else {
-
- if (log.isDebugEnabled()) {
- log.debug("Found instanceof " + value.getClass() + " - will wrap it into singleton " + ListDataModel.class);
- }
-
- model = new ListDataModel(Collections.singletonList(value));
- }
-
- if (isCacheable()) {
-
- if (log.isDebugEnabled()) {
- log.debug("Initializing cache of type " + DataModelCache.class);
- }
-
- model = new DataModelCache(model);
- }
-
- return model;
- }
-
-
- public Object saveState(FacesContext context) {
-
- Object values[] = new Object[4];
- values[0] = super.saveState(context);
- values[1] = ranges;
- values[2] = scrollPos;
- values[3] = saveAttachedState(context, sortListener);
-
- return (Object)values;
-
- }
-
- public void restoreState(FacesContext context, Object state) {
- Object values[] = (Object[])state;
- super.restoreState(context, values[0]);
- ranges = ((List)values[1]);
- scrollPos = (String)values[2];
- sortListener = (SortListener) restoreAttachedState(context, values[3]);
- }
-
- protected Iterator dataChildren() {
-
- IteratorChain chain = new IteratorChain();
- chain.addIterator(getFacets().values().iterator());
- for (Iterator i = getChildren().iterator(); i.hasNext(); ) {
- UIComponent kid = (UIComponent)i.next();
- if (kid instanceof Column) {
- chain.addIterator(kid.getChildren().iterator());
- }
- }
-
- return chain;
- }
-
- protected Iterator fixedChildren() {
-
- IteratorChain chain = new IteratorChain(getFacets().values().iterator());
- for (Iterator i = getChildren().iterator(); i.hasNext(); ) {
- UIComponent kid = (UIComponent)i.next();
- if (kid instanceof Column) {
- chain.addIterator(kid.getFacets().values().iterator());
- }
- }
-
- return chain;
- }
-
- public void broadcast(FacesEvent event) throws AbortProcessingException {
-
- super.broadcast(event);
-
- if (event instanceof AttributeHolder) {
- ((AttributeHolder) event).applyAttributes(this);
- }
-
- if(event instanceof AjaxEvent){
- AjaxContext.getCurrentInstance().addComponentToAjaxRender(this);
- }else if(event instanceof SortEvent){
- processSortingChange(event);
- // new AjaxEvent(this).queue();
- }else if(event instanceof ScrollableGridViewEvent){
- // new AjaxEvent(this).queue();
- processScrolling(event);
- }
-
- }
-
- protected boolean broadcastLocal(FacesEvent event) {
- return super.broadcastLocal(event) || event instanceof SortEvent || event instanceof ScrollableGridViewEvent;
- }
-
- public void queueEvent(FacesEvent event) {
-
- if(event instanceof AjaxEvent){
- event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
- }else if(event instanceof SortEvent){
- new AjaxEvent(this).queue();
- event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
- }else if(event instanceof ScrollableGridViewEvent){
- event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
- new AjaxEvent(this).queue();
- }
- super.queueEvent(event);
- }
-
- public void processScrolling(FacesEvent event){
- ScrollableGridViewEvent e = (ScrollableGridViewEvent)event;
-
- setFirst(e.getFirst());
- reqRowsCount = e.getRows();
-
- getFacesContext().renderResponse();
- }
-
- public void processSortingChange(FacesEvent event){
-
- SortEvent e = (SortEvent)event;
-
- getSortListener().processSort(e);
-
- setFirst(e.getFirst());
- reqRowsCount = e.getRows();
-
-
- resetDataModel();
-
- getFacesContext().renderResponse();
- }
-
- public void walk(FacesContext faces, DataVisitor visitor, Object argument) throws IOException {
-
- Range visitedRange = getComponentState().getRange();
-
- if(ranges == null){
- ranges = new ArrayList();
- }
-
- if(!ranges.contains(visitedRange)){
- ranges.add(visitedRange);
- }
-
- if(useSavedRanges){
-
- for (Iterator iter = ranges.iterator(); iter.hasNext();) {
- ScrollableGridRange range = (ScrollableGridRange) iter.next();
-
- if (log.isDebugEnabled()) {
- log.debug("Range is: " + range.getFirst() + " - " + range.getLast() + " sortOrder: " + range.getSortOrder() );
- }
-
-
- getExtendedDataModel().walk(faces, visitor,range, argument);
- }
-
- }else{
- super.walk(faces, visitor, argument);
- }
- }
-
-
- public void encodeEnd(FacesContext context) throws IOException {
- super.encodeEnd(context);
- }
-
- public boolean isCacheable() {
- return true;
- }
-
- public String getScrollPos() {
- return scrollPos;
- }
-
- public void setScrollPos(String scrollPos) {
- this.scrollPos = scrollPos;
- }
-
- public SortListener getSortListener() {
- if (sortListener != null) {
- return sortListener;
- }
-
- if (SORT_MULTI.equals(getSortMode())) {
-
- return MultiColumnSortListener.INSTANCE;
-
- } else {
-
- return SingleColumnSortListener.INSTANCE;
-
- }
- }
-
- public void setSortListener(SortListener sortListener) {
- this.sortListener = sortListener;
- }
-
- public abstract String getSortMode();
- public abstract void setSortMode(String mode);
-
-}
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/MultiColumnSortListener.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/MultiColumnSortListener.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/MultiColumnSortListener.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -12,7 +12,7 @@
import javax.faces.context.FacesContext;
import org.richfaces.component.Column;
-import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.component.UIScrollableDataTable;
import org.richfaces.model.SortField;
import org.richfaces.model.SortOrder;
@@ -31,7 +31,7 @@
* @see org.richfaces.event.sort.SortListener#processSort(org.richfaces.event.sort.SortEvent)
*/
public void processSort(SortEvent e) {
- UIScrollableGrid grid = (UIScrollableGrid) e.getComponent();
+ UIScrollableDataTable grid = (UIScrollableDataTable) e.getComponent();
int columnIndex = e.getSortColumn();
UIComponent column =
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/SingleColumnSortListener.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/SingleColumnSortListener.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/event/sort/SingleColumnSortListener.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -8,7 +8,7 @@
import javax.faces.context.FacesContext;
import org.richfaces.component.Column;
-import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.component.UIScrollableDataTable;
import org.richfaces.model.SortField;
import org.richfaces.model.SortOrder;
@@ -27,7 +27,7 @@
* @see org.richfaces.event.sort.SortListener#processSort(org.richfaces.event.sort.SortEvent)
*/
public void processSort(SortEvent e) {
- UIScrollableGrid grid = (UIScrollableGrid) e.getComponent();
+ UIScrollableDataTable grid = (UIScrollableDataTable) e.getComponent();
int columnIndex = e.getSortColumn();
UIComponent column =
(UIComponent) grid.getChildren().get(columnIndex);
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -8,7 +8,7 @@
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSReference;
-import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.component.UIScrollableDataTable;
public class AjaxFunctionBuilder {
@@ -28,16 +28,16 @@
return function;
}
- public static JSFunctionDefinition getOnComplete(FacesContext context, UIScrollableGrid grid, int type) {
+ public static JSFunctionDefinition getOnComplete(FacesContext context, UIScrollableDataTable grid, int type) {
JSFunction function = null;
switch (type) {
case SCROLL:
- function = createFunction(ScrollableGridBaseRenderer.getJavaScriptVarName(context, grid) + ".onScrollComplete");
+ function = createFunction(ScrollableDataTableBaseRenderer.getJavaScriptVarName(context, grid) + ".onScrollComplete");
break;
case SORT:
- function = createFunction(ScrollableGridBaseRenderer.getJavaScriptVarName(context, grid) + ".onSortComplete");
+ function = createFunction(ScrollableDataTableBaseRenderer.getJavaScriptVarName(context, grid) + ".onSortComplete");
break;
}
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnIterator.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnIterator.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnIterator.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -7,7 +7,7 @@
import java.util.List;
import org.richfaces.component.Column;
-import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.component.UIScrollableDataTable;
/**
* @author Maksim Kaszynski
@@ -16,8 +16,8 @@
public class ColumnIterator implements Iterator {
- public static ColumnIterator frozen(UIScrollableGrid grid, GridRendererState state) {
- return new ColumnIterator(0, GridUtils.getFrozenColumnsCount(grid), grid, state) {
+ public static ColumnIterator frozen(UIScrollableDataTable grid, ScrollableDataTableRendererState state) {
+ return new ColumnIterator(0, ScrollableDataTableUtils.getFrozenColumnsCount(grid), grid, state) {
public Object next() {
this.state.setFrozenPart(true);
return super.next();
@@ -25,8 +25,8 @@
};
}
- public static ColumnIterator normal(UIScrollableGrid grid, GridRendererState state) {
- return new ColumnIterator(GridUtils.getFrozenColumnsCount(grid), grid.getChildCount(), grid, state) {
+ public static ColumnIterator normal(UIScrollableDataTable grid, ScrollableDataTableRendererState state) {
+ return new ColumnIterator(ScrollableDataTableUtils.getFrozenColumnsCount(grid), grid.getChildCount(), grid, state) {
public Object next() {
this.state.setFrozenPart(false);
return super.next();
@@ -34,17 +34,17 @@
};
}
- public static ColumnIterator all(UIScrollableGrid grid, GridRendererState state) {
+ public static ColumnIterator all(UIScrollableDataTable grid, ScrollableDataTableRendererState state) {
return new ColumnIterator(0, grid.getChildCount(), grid, state);
}
- GridRendererState state;
+ ScrollableDataTableRendererState state;
private int index = 0;
private int start;
private int end;
private List kids;
- private ColumnIterator(int start, int end, UIScrollableGrid grid, GridRendererState state) {
+ private ColumnIterator(int start, int end, UIScrollableDataTable grid, ScrollableDataTableRendererState state) {
this.start = start;
this.end = end;
this.state = state;
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnVisitor.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnVisitor.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnVisitor.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -15,5 +15,5 @@
*/
public interface ColumnVisitor {
- public int visit(FacesContext context, UIComponent column, ResponseWriter writer, GridRendererState state) throws IOException;
+ public int visit(FacesContext context, UIComponent column, ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException;
}
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -11,7 +11,7 @@
import javax.faces.context.ResponseWriter;
import org.richfaces.component.Column;
-import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.component.UIScrollableDataTable;
/**
* @author Anton Belevich
@@ -20,7 +20,7 @@
public class ColumnWalker{
static int iterateOverColumns(FacesContext context, UIComponent component, ColumnVisitor visitor,
- ResponseWriter writer, GridRendererState state) throws IOException{
+ ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException{
int columnsCount = 0;
@@ -40,7 +40,7 @@
}
try {
- if(component instanceof UIScrollableGrid){
+ if(component instanceof UIScrollableDataTable){
for (Iterator iter = component.getChildren().iterator(); iter.hasNext(); ) {
UIComponent kid = (UIComponent) iter.next();
if (kid.isRendered()) {
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ContextualColumnVisitor.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ContextualColumnVisitor.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ContextualColumnVisitor.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -12,6 +12,6 @@
*
*/
public interface ContextualColumnVisitor extends ColumnVisitor {
- public void setUp(FacesContext context, GridRendererState state) throws IOException;
- public void tearDown(FacesContext context, GridRendererState state) throws IOException;
+ public void setUp(FacesContext context, ScrollableDataTableRendererState state) throws IOException;
+ public void tearDown(FacesContext context, ScrollableDataTableRendererState state) throws IOException;
}
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ExtendedColumnVisitor.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ExtendedColumnVisitor.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ExtendedColumnVisitor.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -16,10 +16,10 @@
public abstract class ExtendedColumnVisitor implements ColumnVisitor {
/* (non-Javadoc)
- * @see org.richfaces.renderkit.html.ColumnVisitor#visit(javax.faces.context.FacesContext, org.richfaces.component.UIScrollableGridColumn, javax.faces.context.ResponseWriter, org.richfaces.renderkit.html.GridRendererState)
+ * @see org.richfaces.renderkit.html.ColumnVisitor#visit(javax.faces.context.FacesContext, org.richfaces.component.UIScrollableGridColumn, javax.faces.context.ResponseWriter, org.richfaces.renderkit.html.ScrollableDataTableRendererState)
*/
public int visit(FacesContext context, UIComponent column,
- ResponseWriter writer, GridRendererState state) throws IOException {
+ ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException {
if(state.isFrozenColumn()){
int i = state.getFrozenColumnCount();
@@ -34,5 +34,5 @@
return 1;
};
- abstract public void renderContent(FacesContext context, UIComponent column,ResponseWriter writer, GridRendererState state) throws IOException;
+ abstract public void renderContent(FacesContext context, UIComponent column,ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException;
}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridHeaderRendererBase.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridHeaderRendererBase.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridHeaderRendererBase.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,16 +0,0 @@
-/**
- *
- */
-package org.richfaces.renderkit.html;
-
-import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
-
-/**
- * @author Maksim Kaszynski
- *
- */
-public abstract class GridHeaderRendererBase extends HeaderResourcesRendererBase {
-
-
-
-}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridRendererState.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridRendererState.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridRendererState.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,432 +0,0 @@
-/**
- *
- */
-package org.richfaces.renderkit.html;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-
-import javax.faces.FacesException;
-import javax.faces.component.NamingContainer;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.renderkit.AjaxRendererUtils;
-import org.richfaces.component.UIScrollableGrid;
-
-/**
- * bean to store current {@link com.exadel.vcp.components.datagrid.UIDataGrid } information
- * in request map. For nested grids, it support push/pop state saving.
- * In {@link javax.faces.render.Renderer#encodeBegin(javax.faces.context.FacesContext, javax.faces.component.UIComponent)} method
- * must be created instance of this bean , or, if it already exist in request map - push information.
- * at the end of encodeEnd call, bean must be pop information or removed.
- * @author shura
- *
- */
-public class GridRendererState implements Serializable {
-
- public static final String DATA_GRID_RENDERER_STATE = GridRendererState.class.getName();
-
- private boolean fake;
-
- private HashSet ids = new HashSet();
-
- private String rowClasses[];
-
- private int rowClassesSize;
-
- private String columnClasses[];
-
- private int columnClassesSize;
-
- private int _rowIndex = 0;
-
- private int _cellIndex = 0;
-
- private int _columns = 0;
-
- private Collection collection;
-
- private Integer sepOffset;
-
- private String _cell_id_prefix;
-
- private int sumWidth = 0;
-
- private boolean header = false;
-
- private String _column_type;
-
- private int _frozenColumnCount = -1;
-
- private AjaxContext ajaxContext;
-
- private String part;
-
- private boolean _frozenPart = false;
-
- private ResponseWriter writer;
-
- private UIScrollableGrid _grid;
-
- private String clientId;
-
- private String _cachedClientId;
-
- private GridRendererState _previousState = null;
-
- private Object rowKey;
-
- private static final long serialVersionUID = 2129605586975025578L;
-
-
- /**
- * Get current grid state from JSF context
- * @param context
- * @return current data grid state, or null if not saved.
- */
- public static GridRendererState getRendererState(FacesContext context) throws FacesException {
- if(null == context){
- throw new NullPointerException("Context for grid state is null");
- }
- GridRendererState state = (GridRendererState) context.getExternalContext().getRequestMap().get(DATA_GRID_RENDERER_STATE);
-// if( null == state){
-// throw new FacesException("State for current grid not stored in context");
-// }
- return state;
- }
-
- /**
- * Create new state for current grid. If state exist, store previsius in field of created.
- * @param context
- * @param grid
- * @return new state for grid.
- */
- public static GridRendererState createState(FacesContext context, UIScrollableGrid grid){
- if(null == context){
- throw new NullPointerException("Context for grid state is null");
- }
- GridRendererState oldState = getRendererState(context);
- GridRendererState state = new GridRendererState(context,oldState,grid);
- state.setColumnClasses(grid.getAttributes().get("columnClasses"));
- state.setRowClasses(grid.getAttributes().get("rowClasses"));
- context.getExternalContext().getRequestMap().put(DATA_GRID_RENDERER_STATE,state);
- return state;
- }
-
- /**
- * Restore previsius state for gred, or clear request parameter.
- * @param context
- */
- public static void restoreState(FacesContext context) {
- if (null == context) {
- throw new NullPointerException("Context for grid state is null");
- }
- GridRendererState state = getRendererState(context);
- if (null == state) {
- throw new FacesException(
- "State for current grid not saved in context");
- }
- GridRendererState previsiosState = state.getPreviousState();
- if (null != previsiosState) {
- context.getExternalContext().getRequestMap().put(DATA_GRID_RENDERER_STATE,
- previsiosState);
- } else {
- context.getExternalContext().getRequestMap().remove(DATA_GRID_RENDERER_STATE);
- }
- }
- /**
- * Create state for current grid ( and store previsios state in field ).
- * @param previsiosState
- */
- public GridRendererState(FacesContext context, GridRendererState previsiosState, UIScrollableGrid grid) {
- super();
- _grid = grid;
- _cachedClientId = grid.getClientId(context);
- clientId = _cachedClientId;
- _previousState = previsiosState;
- if(AjaxRendererUtils.isAjaxRequest(context)){
- }
-
- Map attrs = grid.getAttributes();
- }
-
- public String getCurrentCellId(FacesContext context){
- return getGrid().getClientId(context)+NamingContainer.SEPARATOR_CHAR+"row"+getRowIndex()+
- NamingContainer.SEPARATOR_CHAR+"col"+getCellIndex();
- }
-
- /**
- * @return Returns the cellIndex.
- */
- public int getCellIndex() {
- return _cellIndex;
- }
-
- /**
- * @param cellIndex The cellIndex to set.
- */
- public void setCellIndex(int cellIndex) {
- _cellIndex = cellIndex;
- }
-
- /**
- * Increment cells counter
- * @return next cell number.
- */
-
- public int nextCell(){
- return ++_cellIndex;
- }
-
-
- /**
- * @return Returns the columns.
- */
- public int getColumns() {
- return _columns;
- }
-
- /**
- * @param columns The columns to set.
- */
- public void setColumns(int columns) {
- _columns = columns;
- }
-
- /**
- * @return Returns the grid.
- */
- public UIScrollableGrid getGrid() {
- return _grid;
- }
-
- /**
- * @param grid The grid to set.
- */
- public void setGrid(UIScrollableGrid grid) {
- _grid = grid;
- }
-
- /**
- * @return Returns the previsiosState.
- */
- public GridRendererState getPreviousState() {
- return _previousState;
- }
-
- /**
- * @param previsiosState The previsiosState to set.
- */
- public void setPreviousState(GridRendererState previsiosState) {
- _previousState = previsiosState;
- }
-
- /**
- * @return Returns the rowIndex.
- */
- public int getRowIndex() {
- if(_rowIndex >= _grid.getRows()){
- _rowIndex = 0;
- }
- return _rowIndex;
- }
-
- /**
- * Increment current row counter.
- * @return new row number.
- */
- public int nextRow(){
- _rowIndex = _rowIndex + 1;
- return _rowIndex;
- }
-
- /**
- * @param rowIndex The rowIndex to set.
- */
- public void setRowIndex(int rowIndex) {
- _rowIndex = rowIndex;
- }
-
-
- /**
- * @return the _cachedClientId
- */
- public String getCachedClientId() {
- return _cachedClientId;
- }
-
-
- private StringBuffer buffer = new StringBuffer();
-
- /**
- * @return the buffer
- */
- public StringBuffer getBuffer() {
- buffer.setLength(0);
- return buffer;
- }
-
- /**
- * @return the rowKey
- */
- public Object getRowKey() {
- return rowKey;
- }
-
- /**
- * @param rowKey the rowKey to set
- */
- public void setRowKey(Object rowKey) {
- this.rowKey = rowKey;
- }
-
- public boolean isFrozenColumn() {
- return _frozenColumnCount <= 0 ? false:true;
- }
-
- public void setFrozenColumnCount(int columnCount) {
- _frozenColumnCount = columnCount;
- }
-
- public int getFrozenColumnCount() {
- return _frozenColumnCount;
- }
-
- public boolean isFrozenPart() {
- return _frozenPart;
- }
-
- public void setFrozenPart(boolean part) {
- _frozenPart = part;
- }
-
- public String getCellIdPrefix() {
- return _cell_id_prefix;
- }
-
- public void setCellIdPrefix(String _id_prefix) {
- this._cell_id_prefix = _id_prefix;
- }
-
- public String getColumnType() {
- return _column_type;
- }
-
- public void setColumType(String _column_type) {
- this._column_type = _column_type;
- }
-
- public AjaxContext getAjaxContext() {
- return ajaxContext;
- }
-
- public void setAjaxContext(AjaxContext ajaxContext) {
- this.ajaxContext = ajaxContext;
- }
-
- public ResponseWriter getWriter() {
- return writer;
- }
-
- public void setWriter(ResponseWriter writer) {
- this.writer = writer;
- }
-
- public String getClientId(){
- return clientId;
- }
-
- public void setClientId(String clientId){
- this.clientId = clientId;
- }
-
- public boolean isHeader() {
- return header;
- }
-
- public void setHeader(boolean header) {
- this.header = header;
- }
-
- public String getPart() {
- return part;
- }
-
- public void setPart(String part) {
- this.part = part;
- }
-
- public int getSumWidth() {
- return sumWidth;
- }
-
- public void setSumWidth(int sumWidth) {
- this.sumWidth = sumWidth;
- }
-
- public Integer getSepOffset() {
- return sepOffset;
- }
-
- public void setSepOffset(Integer sepOffset) {
- this.sepOffset = sepOffset;
- }
-
- public Collection getCollection() {
- return collection;
- }
-
- public void setCollection(Collection collection) {
- this.collection = collection;
- }
-
- public boolean isFake() {
- return fake;
- }
-
- public void setFake(boolean fake) {
- this.fake = fake;
- }
-
- public String getColumnClass(int index) {
- if(columnClasses != null) {
- return columnClasses[index % columnClassesSize];
- } else {
- return "";
- }
- }
-
- public void setColumnClasses(Object columnClasses) {
- if(columnClasses != null) {
- this.columnClasses = ((String)columnClasses).split(",");
- columnClassesSize = this.columnClasses.length;
- }
- }
-
- public String getRowClass(int index) {
- if(rowClasses != null) {
- return rowClasses[index % rowClassesSize];
- } else {
- return "";
- }
- }
-
- public void setRowClasses(Object rowClasses) {
- if(rowClasses != null) {
- this.rowClasses = ((String)rowClasses).split(",");
- rowClassesSize = this.rowClasses.length;
- }
- }
-
- public HashSet getIds() {
- return ids;
- }
-
- public void addId(String id) {
- ids.add(id);
- }
-}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridUtils.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridUtils.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/GridUtils.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,37 +0,0 @@
-/**
- *
- */
-package org.richfaces.renderkit.html;
-
-import javax.faces.component.UIComponent;
-
-import org.richfaces.component.UIScrollableGrid;
-
-/**
- * @author Maksim Kaszynski
- *
- */
-public class GridUtils {
-
- public static final String FROZEN_COL_COUNT_ATTR = "frozenColCount";
- public static final String CLIENT_ROW_KEY = "clientIndex";
-
- public static int getFrozenColumnsCount(UIScrollableGrid grid) {
- return getIntOr0(grid, FROZEN_COL_COUNT_ATTR);
- }
-
- public static int getClientRowIndex(UIScrollableGrid grid) {
- return getIntOr0(grid, CLIENT_ROW_KEY);
- }
-
- public static int getIntOr0(UIComponent grid, String attribute) {
- Object value = grid.getAttributes().get(attribute);
- int i = 0;
- if (value instanceof Number) {
- i = ((Number) value).intValue();
- }
-
- return i;
- }
-
-}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,805 @@
+package org.richfaces.renderkit.html;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.ComponentVariables;
+import org.ajax4jsf.renderkit.ComponentsVariableResolver;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.richfaces.component.Column;
+import org.richfaces.component.UIScrollableDataTable;
+import org.richfaces.event.scroll.ScrollEvent;
+import org.richfaces.event.sort.SortEvent;
+import org.richfaces.model.SortField;
+import org.richfaces.model.SortOrder;
+import org.richfaces.renderkit.CompositeRenderer;
+import org.richfaces.renderkit.RendererContributor;
+import org.richfaces.utils.TemplateLoader;
+
+
+
+/**
+ * @author Anton Belevich
+ *
+ */
+
+public abstract class ScrollableDataTableBaseRenderer extends CompositeRenderer {
+
+ public final String PARTIAL_UPDATE= "partialUpdate";
+ public final String UPDATE_HEADER = "updateHeader";
+
+ public final String FOOTER_PART = "footer";
+
+ public final String HEADER_PART = "header";
+
+ private final String COLUMN_FROZEN_TYPE = "frozen";
+
+ private final String COLUMN_NORMAL_TYPE = "normal";
+
+ private RendererBase cellTemplate = null;
+
+ private RendererBase headerCellTemplate = null;
+
+ private RendererBase footerCellTemplate = null;
+
+ private RendererBase headerItselfTemplate = null;
+
+ private final Log log = LogFactory.getLog(ScrollableDataTableBaseRenderer.class);
+
+ private final ColumnVisitor columnsWidthCounter = new ColumnVisitor(){
+
+ public int visit(FacesContext context, UIComponent column, ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException {
+
+ int prevWidth = 0;
+ int width = 0;
+
+
+ String widthPx = (String)column.getAttributes().get("width");
+ prevWidth = state.getSumWidth();
+
+ if(widthPx.endsWith("px")){
+ width = prevWidth + Integer.parseInt(widthPx.substring(0, widthPx.indexOf("px")));
+ }
+
+ state.setSumWidth(width);
+ return 1;
+ }
+ };
+
+ private final ColumnVisitor colsRenderer = new ExtendedColumnVisitor(){
+
+ public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException {
+ writer.startElement("col", column);
+ getUtils().writeAttribute(writer, "width", column.getAttributes().get("width"));
+ getUtils().writeAttribute(writer, "style", column.getAttributes().get("style"));
+ int cell_index = state.getCellIndex();
+ Object columnClass = state.getColumnClass(cell_index);
+ if(columnClass!=null) getUtils().writeAttribute(writer, "class", columnClass);
+
+ writer.endElement("col");
+ }
+ };
+
+ private final ColumnVisitor headerCellRenderer = new ExtendedColumnVisitor(){
+
+ public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException {
+
+
+ int cell_index = state.getCellIndex();
+ String client_id = state.getClientId();
+ state.addId(column.getId());
+ headerCellTemplate = getHeaderCellTemplate();
+
+ ComponentVariables variables =
+ ComponentsVariableResolver.getVariables(headerCellTemplate, column);
+ String widthPx = (String)column.getAttributes().get("width");
+ int width = Integer.parseInt(widthPx.substring(0, widthPx.indexOf("px")));
+
+
+ int sepOffset = 0;
+
+ if(state.isFrozenColumn()){
+ sepOffset = state.getSepOffset().intValue() + width;
+ }else{
+ sepOffset = state.getSepOffset().intValue() + width + 1;
+ state.setSepOffset(new Integer(sepOffset));
+ }
+
+ variables.setVariable("client_id", client_id);
+ variables.setVariable("cell_index", new Integer(cell_index));
+ variables.setVariable("sepOffset", new Integer(sepOffset));
+
+ headerCellTemplate.encodeBegin(context, column);
+ headerRenderer.visit(context, column, writer, state);
+ headerCellTemplate.encodeEnd(context, column);
+ }
+ };
+
+ private final ColumnVisitor headerRenderer = new ColumnVisitor() {
+
+ public int visit(FacesContext context, UIComponent column,
+ ResponseWriter writer, ScrollableDataTableRendererState state)
+ throws IOException {
+
+ ComponentVariables variables =
+ ComponentsVariableResolver.getVariables(getHeaderItselfTemplate(), column);
+
+ int cell_index = state.getCellIndex();
+ String client_id = state.getClientId();
+ Boolean sorting = getColumnSorting(state.getGrid(), cell_index);
+
+ if (sorting != null) {
+ if (sorting.booleanValue()) {
+ variables.setVariable("sortAscending", Boolean.TRUE);
+ } else {
+ variables.setVariable("sortDescending", Boolean.TRUE);
+ }
+ }
+ variables.setVariable("client_id", client_id);
+ variables.setVariable("cell_index", new Integer(cell_index));
+
+ getHeaderItselfTemplate().encodeBegin(context, column);
+
+ UIComponent header = column.getFacet(HEADER_PART);
+
+ if(header != null){
+ renderChild(context, header);
+ }
+ getHeaderItselfTemplate().encodeEnd(context, column);
+
+ return 0;
+ }
+
+
+ private Boolean getColumnSorting(UIScrollableDataTable grid, int columnIndex) {
+
+ Boolean sorting = null;
+
+ UIComponent column =
+ (UIComponent) grid.getChildren().get(columnIndex);
+
+ //TODO: replace with getName?
+ String name = column.getId();
+
+ SortOrder sortOrder = grid.getSortOrder();
+
+ if (sortOrder != null) {
+ SortField[] sortFields = sortOrder.getFields();
+
+ if (sortFields != null) {
+ for (int i = 0; i < sortFields.length && sorting == null; i++) {
+ SortField sortField = sortFields[i];
+
+ if ((name != null && name.equals(sortField.getName()))
+ || columnIndex == sortField.getIndex()) {
+ sorting = sortField.getAscending();
+ }
+ }
+ }
+ }
+
+ return sorting;
+ }
+
+ };
+
+ private final ColumnVisitor footerCellRenderer = new ExtendedColumnVisitor(){
+
+ public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException {
+
+ int cell_index = state.getCellIndex();
+ String client_id = state.getClientId();
+
+ footerCellTemplate = getFooterCellTemplate();
+
+ ComponentVariables variables = ComponentsVariableResolver.getVariables(footerCellTemplate, column);
+ variables.setVariable("client_id", client_id);
+ variables.setVariable("cell_index", new Integer(cell_index));
+
+
+ UIComponent component = column.getFacet(FOOTER_PART);
+ if(component != null){
+ footerCellTemplate.encodeBegin(context, column);
+ renderChild(context, component);
+ footerCellTemplate.encodeEnd(context, column);
+ }
+ }
+ };
+
+ private final ColumnVisitor cellRenderer = new ExtendedColumnVisitor(){
+
+ public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, ScrollableDataTableRendererState state) throws IOException {
+
+ String cell_id = state.getRowIndex()+ "_" + state.getCellIndex();
+ if (log.isTraceEnabled()) {
+ log.trace("cell_index: " + cell_id);
+ }
+
+ String client_id = state.getClientId();
+ int cell_index = state.getCellIndex();
+ cellTemplate = getCellTemplate();
+
+ ComponentVariables variables = ComponentsVariableResolver.getVariables(cellTemplate, column);
+ variables.setVariable("cell_id",cell_id);
+ variables.setVariable("client_id", client_id);
+ variables.setVariable("cell_index", new Integer(cell_index));
+ variables.setVariable("columnClass", state.getColumnClass(cell_index));
+
+ cellTemplate.encodeBegin(context, column);
+ if(!state.isFake()) {
+ renderChildren(context, column);
+ }
+ cellTemplate.encodeEnd(context, column);
+ }
+
+ };
+
+
+ private final DataVisitor rowsRenderer = new DataVisitor(){
+
+ public void process(FacesContext context, Object rowKey, Object argument) throws IOException {
+
+ ScrollableDataTableRendererState state = (ScrollableDataTableRendererState)argument;
+ UIScrollableDataTable grid = state.getGrid();
+
+ grid.setRowKey(rowKey);
+
+ if(grid.isRowAvailable() || state.isFake()){
+ String row_id;
+
+ int index = state.getRowIndex();
+
+ //state.setRowIndex(index);
+
+ String baseClientId = grid.getBaseClientId(context);
+
+ if(state.isFrozenPart()){
+ row_id = baseClientId + ":f:" + index;
+ }else{
+ row_id = baseClientId + ":n:" + index;
+ }
+
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement(HTML.TR_ELEMENT, grid);
+ state.setFrozenColumnCount(ScrollableDataTableUtils.getFrozenColumnsCount(grid));
+ getUtils().writeAttribute(writer, "id",row_id);
+ getUtils().writeAttribute(writer, "class","dr-sdt-rb rich-sdt-row" + state.getRowClass(index));
+
+ if (log.isDebugEnabled()) {
+ log.debug("rowIndex : " + index);
+ }
+
+ ColumnWalker.iterateOverColumns(context, grid, cellRenderer, writer, state);
+ if(!state.isFrozenPart()){
+ writer.startElement("td", grid);
+ getUtils().writeAttribute(writer, "class","dr-sdt-bc rich-sdt-row" + state.getColumnClass(state.getCellIndex()));
+ writer.endElement("td");
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ state.nextRow();
+ state.setCellIndex(0);
+
+ }
+ }
+ };
+
+ private final DataVisitor ajaxRowsRenderer = new DataVisitor(){
+
+
+ public void process(FacesContext context, Object rowKey, Object argument) throws IOException {
+
+ int columnsCount = 0;
+
+ boolean frozenTRRendered = false;
+
+ boolean normalTRRendered = false;
+
+ ScrollableDataTableRendererState state = (ScrollableDataTableRendererState)argument;
+ AjaxContext ajaxContext = state.getAjaxContext();
+ ajaxContext.getResponseData();
+
+ UIScrollableDataTable grid = state.getGrid();
+ Collection collection = grid.getResponseData();
+
+ grid.setRowKey(rowKey);
+ ResponseWriter writer = context.getResponseWriter();
+ state.setFrozenColumnCount(ScrollableDataTableUtils.getFrozenColumnsCount(grid));
+
+ String row_id = null;
+
+
+ for (Iterator iter = grid.getChildren().iterator(); iter.hasNext(); ) {
+ UIComponent kid = (UIComponent) iter.next();
+
+ if (kid.isRendered()) {
+
+ if (kid instanceof Column){
+ String baseClientId = grid.getBaseClientId(context);
+
+ if(state.isFrozenColumn() && !frozenTRRendered){
+
+ state.setFrozenPart(true);
+ frozenTRRendered = true;
+
+ row_id = baseClientId + ":f:" + state.getRowIndex();
+ writer.startElement("tr", grid);
+ getUtils().writeAttribute(writer, "class","dr-sdt-rb rich-sdt-row" + state.getRowClass(state.getRowIndex()));
+ getUtils().writeAttribute(writer,"id",row_id);
+ collection.add(row_id);
+
+ }else if(!state.isFrozenColumn() && !normalTRRendered){
+
+ if(frozenTRRendered){
+ writer.endElement("tr");
+ }
+
+ state.setFrozenPart(false);
+ row_id = baseClientId + ":n:" + state.getRowIndex();
+
+ writer.startElement("tr", grid);
+ getUtils().writeAttribute(writer,"id",row_id);
+ getUtils().writeAttribute(writer, "class","dr-sdt-rb rich-sdt-row" + state.getRowClass(state.getRowIndex()));
+ normalTRRendered = true;
+ collection.add(row_id);
+
+ }
+
+ columnsCount += cellRenderer.visit(context, kid, writer, state);
+// columnsCount += cellRenderer.visit(context, column, writer, state);
+
+
+
+
+ state.nextCell();
+
+ }
+
+ }
+
+ }
+
+// if(!state.isFrozenPart()){
+// writer.startElement("td", grid);
+// getUtils().writeAttribute(writer, "class","dr-sdt-bc " + state.getColumnClass(state.getCellIndex()));
+// writer.endElement("td");
+// }
+
+ writer.endElement("tr");
+ state.setCellIndex(0);
+ state.nextRow();
+ }
+ };
+
+
+ public ScrollableDataTableBaseRenderer() {
+ addContributor(new SelectionRendererContributor());
+ }
+
+ public static String getJavaScriptVarName(FacesContext context, UIScrollableDataTable grid) {
+
+ String name = grid.getScriptVar();
+ if (name == null) {
+ String id = grid.getBaseClientId(context);
+ name = "Richfaces_ScrollableGrid_" + id.replaceAll("[^A-Za-z0-9_]", "_");
+ }
+
+ return "window." + name;
+ }
+
+ public String createClientScrollableGrid(FacesContext context, UIScrollableDataTable grid) {
+
+ ScrollableDataTableOptions options = new ScrollableDataTableOptions(grid);
+
+
+ mergeScriptOptions(options, context, grid);
+
+ JSFunction function = new JSFunction("new ClientUI.controls.grid.ScrollableGrid");
+ function.addParameter(options);
+ return function.toScript();
+ }
+
+ protected String getScriptContributions(FacesContext context, UIScrollableDataTable grid) {
+ return super.getScriptContributions(getJavaScriptVarName(context, grid), context, grid);
+ }
+
+ public boolean getRendersChildren() {
+ return true;
+ }
+
+ public void renderGridBody(FacesContext context, UIScrollableDataTable grid, boolean isFrozen) throws IOException{
+
+ final ScrollableDataTableRendererState state = ScrollableDataTableRendererState.getRendererState(context);
+
+ if(isFrozen){
+ state.setColumType(COLUMN_FROZEN_TYPE);
+ }else{
+ state.setColumType(COLUMN_NORMAL_TYPE);
+ }
+
+ if (log.isTraceEnabled()) {
+ log.trace("ScrollableDataTableBaseRenderer.renderGridBody(context, grid, isFrozen)");
+ }
+
+ state.setFrozenColumnCount(ScrollableDataTableUtils.getFrozenColumnsCount(grid));
+ state.setFrozenPart(isFrozen);
+ state.setClientId(grid.getClientId(context));
+
+ grid.walk(context, rowsRenderer, state);
+
+ int fakeRowsCount = grid.getRows() - grid.getRowCount();
+ state.setFake(true);
+ for (int i = 0; i < fakeRowsCount; i++) {
+ rowsRenderer.process(context, null, state);
+ }
+
+ state.setFake(false);
+ grid.setRowKey(null);
+ }
+
+ public void renderHeaders(FacesContext context, UIScrollableDataTable grid, boolean isFrozen)throws IOException{
+
+ ResponseWriter writer = context.getResponseWriter();
+ final ScrollableDataTableRendererState state = ScrollableDataTableRendererState.getRendererState(context);
+
+ if(isFrozen){
+ state.setColumType(COLUMN_FROZEN_TYPE);
+ }else{
+ state.setColumType(COLUMN_NORMAL_TYPE);
+ }
+
+ state.setClientId(grid.getClientId(context));
+ state.setPart(HEADER_PART);
+ state.setFrozenColumnCount(ScrollableDataTableUtils.getFrozenColumnsCount(grid));
+ state.setFrozenPart(isFrozen);
+ state.setClientId(grid.getClientId(context));
+ state.setSepOffset(new Integer(0));
+
+ ColumnWalker.iterateOverColumns(context, grid, headerCellRenderer, writer, state);
+ }
+
+ public void renderCols(FacesContext context, UIScrollableDataTable grid, boolean isFrozen) throws IOException{
+
+ ResponseWriter writer = context.getResponseWriter();
+ final ScrollableDataTableRendererState state = ScrollableDataTableRendererState.getRendererState(context);
+
+ if(isFrozen){
+ state.setColumType(COLUMN_FROZEN_TYPE);
+ }else{
+ state.setColumType(COLUMN_NORMAL_TYPE);
+ }
+
+ state.setClientId(grid.getClientId(context));
+ state.setFrozenColumnCount(ScrollableDataTableUtils.getFrozenColumnsCount(grid));
+ state.setFrozenPart(isFrozen);
+ ColumnWalker.iterateOverColumns(context, grid, colsRenderer, writer, state);
+ }
+
+
+ public void renderFooters(FacesContext context, UIScrollableDataTable grid, boolean isFrozen) throws IOException{
+
+ ResponseWriter writer = context.getResponseWriter();
+ final ScrollableDataTableRendererState state = ScrollableDataTableRendererState.getRendererState(context);
+
+ if(isFrozen){
+ state.setColumType(COLUMN_FROZEN_TYPE);
+ }else{
+ state.setColumType(COLUMN_NORMAL_TYPE);
+ }
+
+ state.setClientId(grid.getClientId(context));
+ state.setFrozenColumnCount(ScrollableDataTableUtils.getFrozenColumnsCount(grid));
+ state.setFrozenPart(isFrozen);
+ int colsCount = ColumnWalker.iterateOverColumns(context, grid, footerCellRenderer, writer, state);
+ int rowsCount = grid.getRowCount();
+
+ ComponentVariables variables = ComponentsVariableResolver.getVariables(this, grid);
+ variables.setVariable("rows_count", new Integer(rowsCount));
+ variables.setVariable("columns_count", new Integer(colsCount));
+
+ }
+
+ public void setUpState(FacesContext context, UIScrollableDataTable grid) {
+ ScrollableDataTableRendererState.createState(context, grid);
+ }
+
+ public void tearDownState(FacesContext context, UIScrollableDataTable grid){
+ ScrollableDataTableRendererState.restoreState(context);
+ }
+
+
+ public String getRowsAjaxUpdate(FacesContext context, UIScrollableDataTable grid){
+
+ JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
+ Map options = AjaxRendererUtils.buildEventOptions(context, grid);
+ options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, AjaxFunctionBuilder.SCROLL));
+ Map parametersMap = (Map)options.get("parameters");
+ parametersMap.put(grid.getBaseClientId(context) + ":scroll", "");
+ function.addParameter(options);
+ String completeFunction = function.toScript()+"; return false;";
+
+ return completeFunction;
+
+ }
+
+
+ protected void doDecode(FacesContext context, UIComponent component) {
+
+ super.doDecode(context, component);
+
+ component.getAttributes().remove(PARTIAL_UPDATE);
+ component.getAttributes().remove(UPDATE_HEADER);
+
+
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+
+ if(component instanceof UIScrollableDataTable){
+
+ UIScrollableDataTable grid = (UIScrollableDataTable)component;
+ ExternalContext externalContext = context.getExternalContext();
+ String clientId = grid.getClientId(context);
+ boolean sorted = false;
+ Map parameters = externalContext.getRequestParameterMap();
+
+ String s_id = clientId + ":si";
+ if(parameters.containsKey(s_id)){
+ String options = (String)parameters.get(s_id);
+ grid.setScrollPos(options);
+ }
+
+
+ if(parameters.containsKey(clientId + ":sortColumn") &&
+ parameters.containsKey(clientId + ":sortStartRow") &&
+ parameters.containsKey(clientId + ":sortIndex") &&
+ parameters.containsKey(clientId + ":sortOrder")){
+
+ int sortColumn = Integer.parseInt((String)parameters.get(clientId + ":sortColumn"));
+ int sortDataIndex = Integer.parseInt((String)parameters.get(clientId + ":sortIndex"));
+ Integer sortStartRow = Integer.valueOf((String)parameters.get(clientId + ":sortStartRow"));
+
+ Column column = (Column)grid.getChildren().get(sortColumn);
+
+ if(column.isSortable()){
+
+ sorted = true;
+ SortEvent sortEvent = new SortEvent(grid,sortColumn, grid.getRows(), sortDataIndex);
+
+ sortEvent.setAttribute(ScrollableDataTableUtils.CLIENT_ROW_KEY,sortStartRow);
+
+ if (ajaxContext.isAjaxRequest()) {
+ sortEvent.setAttribute(PARTIAL_UPDATE, Boolean.TRUE);
+ sortEvent.setAttribute(UPDATE_HEADER, Boolean.TRUE);
+ }
+
+
+ sortEvent.queue();
+ }
+ }
+
+
+ if(parameters.containsKey(clientId + ":scroll") && !sorted){
+
+ String submitedState = (String)parameters.get(clientId + "_state_input");
+ boolean isEmpty = true;
+
+
+ String [] values = submitedState.split(",");
+ for (int i = 0; i < values.length; i++) {
+ isEmpty = isEmpty && values[i].equals("");
+ }
+
+ int rows = 0;
+ int first = 0;
+
+ if(!isEmpty){
+ rows = Integer.parseInt(values[0]);
+ first = Integer.parseInt(values[1]);
+ ScrollEvent scrollEvent = new ScrollEvent(grid,rows,first);
+
+ scrollEvent.setAttribute(ScrollableDataTableUtils.CLIENT_ROW_KEY,Integer.valueOf(values[2]));
+
+ if (ajaxContext.isAjaxRequest()) {
+ scrollEvent.setAttribute(PARTIAL_UPDATE, Boolean.TRUE);
+ }
+
+ scrollEvent.queue();
+
+ }
+ }
+
+
+ }
+
+
+ }
+
+ public void renderAjaxChildren(FacesContext context, UIComponent component)throws IOException{
+
+ UIScrollableDataTable grid = (UIScrollableDataTable)component;
+
+
+
+ ScrollableDataTableRendererState state = ScrollableDataTableRendererState.createState(context, grid);
+
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ String client_id = grid.getClientId(context);
+
+ state.setClientId(client_id);
+ state.setAjaxContext(ajaxContext);
+ state.setRowIndex(ScrollableDataTableUtils.getClientRowIndex(grid));
+
+ if (log.isDebugEnabled()) {
+ log.debug("ScrollableDataTableBaseRenderer.renderAjaxChildren()");
+ }
+
+ grid.getResponseData().clear();
+
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement("table", grid);
+ writer.startElement("tbody", grid);
+
+ grid.walk(context, ajaxRowsRenderer, state);
+
+ writer.endElement("tbody");
+ writer.endElement("table");
+
+ ScrollableDataTableRendererState.restoreState(context);
+ grid.setRowKey(null);
+
+ ajaxContext.setResponseData(grid.getResponseData());
+
+ ajaxContext.getAjaxRenderedAreas().remove(grid.getClientId(context));
+ ScrollableDataTableScrollData options = createOptions(grid);
+ ajaxContext.getResponseDataMap().put("options", options);
+
+ //Then call contributors to write additional HTML content
+ contributorsEncodeHere(context, grid);
+
+ if (shouldUpdateHeader(component)) {
+ ColumnWalker.iterateOverColumns(context, component, headerRenderer, writer, new ScrollableDataTableRendererState(context, null, grid));
+ }
+
+
+ }
+
+ private ScrollableDataTableScrollData createOptions(UIScrollableDataTable grid){
+
+ int index = grid.getFirst();
+ int startRow = ScrollableDataTableUtils.getClientRowIndex(grid);
+ int count = grid.getRows();
+
+ ScrollableDataTableScrollData options = new ScrollableDataTableScrollData(index, startRow, count);
+
+ return options;
+ }
+
+ private boolean onlyPartialUpdateNeeded(UIComponent grid) {
+ Boolean b = (Boolean) grid.getAttributes().get(PARTIAL_UPDATE);
+ return b != null && b.booleanValue() && AjaxContext.getCurrentInstance().isAjaxRequest();
+ }
+
+ private boolean shouldUpdateHeader(UIComponent grid) {
+ Boolean b = (Boolean) grid.getAttributes().get(UPDATE_HEADER);
+ return b != null && b.booleanValue() && AjaxContext.getCurrentInstance().isAjaxRequest();
+ }
+
+ public void encodeChildren(FacesContext context, UIComponent component
+ ) throws IOException {
+
+ if(onlyPartialUpdateNeeded(component)){
+ renderAjaxChildren(context, component);
+ }else{
+ super.encodeChildren(context, component);
+ }
+
+ }
+
+ public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+
+ if(component instanceof UIScrollableDataTable){
+ UIScrollableDataTable grid = (UIScrollableDataTable)component;
+ setUpState(context, grid);
+ }
+
+ if(!onlyPartialUpdateNeeded(component)){
+ super.encodeBegin(context, component);
+ }
+ }
+
+ public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+
+ if(component instanceof UIScrollableDataTable){
+
+ if(!onlyPartialUpdateNeeded(component)){
+ super.encodeEnd(context, component);
+ }
+ }
+ }
+
+ public void setUpColumnsWidth(FacesContext context, UIScrollableDataTable grid) throws IOException{
+ ScrollableDataTableRendererState state = ScrollableDataTableRendererState.getRendererState(context);
+ state.setFrozenColumnCount(ScrollableDataTableUtils.getFrozenColumnsCount(grid));
+ ColumnWalker.iterateOverColumns(context, grid, columnsWidthCounter, null, state);
+ ComponentVariables variables = ComponentsVariableResolver.getVariables(this, grid);
+ int sumWidth = state.getSumWidth() + 200;
+ variables.setVariable("sumWidth", new Integer(sumWidth));
+ }
+
+ private RendererBase getCellTemplate() {
+ if (cellTemplate == null) {
+ cellTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableDataTableCellRenderer");
+ }
+ return cellTemplate;
+ }
+
+ private RendererBase getHeaderCellTemplate() {
+
+ if (headerCellTemplate == null) {
+ headerCellTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableDataTableHeaderCellRenderer");
+ }
+ return headerCellTemplate;
+ }
+
+ private RendererBase getFooterCellTemplate() {
+
+ if (footerCellTemplate == null) {
+ footerCellTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableDataTableFooterCellRenderer");
+ }
+ return footerCellTemplate;
+ }
+
+
+
+ private RendererBase getHeaderItselfTemplate() {
+
+ if (headerItselfTemplate == null) {
+ headerItselfTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableDataTableHeaderItselfRenderer");
+ }
+
+ return headerItselfTemplate;
+ }
+
+
+ public void renderHiddenScrollInput(FacesContext context, UIScrollableDataTable grid) throws IOException{
+
+ ResponseWriter writer = context.getResponseWriter();
+ String id = grid.getClientId(context) + ":si";
+ writer.startElement("input", grid);
+
+ getUtils().writeAttribute(writer, "type", "hidden");
+ getUtils().writeAttribute(writer, "name", id);
+ getUtils().writeAttribute(writer, "id", id);
+ getUtils().writeAttribute(writer, "value", grid.getScrollPos());
+
+ writer.endElement("input");
+
+ }
+
+ public void contributorsEncodeHere(FacesContext context, UIScrollableDataTable grid) throws IOException {
+ RendererContributor [] contribs = getContributors();
+
+ if (contribs != null) {
+ for (int i = 0; i < contribs.length; i++) {
+ RendererContributor rendererContributor = contribs[i];
+
+ if (rendererContributor instanceof HTMLEncodingContributor) {
+ ((HTMLEncodingContributor) rendererContributor).encode(context, grid);
+ }
+ }
+ }
+ }
+
+}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableHeaderRendererBase.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableHeaderRendererBase.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableHeaderRendererBase.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,16 @@
+/**
+ *
+ */
+package org.richfaces.renderkit.html;
+
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
+
+/**
+ * @author Maksim Kaszynski
+ *
+ */
+public abstract class ScrollableDataTableHeaderRendererBase extends HeaderResourcesRendererBase {
+
+
+
+}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableOptions.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableOptions.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableOptions.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,97 @@
+/**
+ * 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.renderkit.html;
+
+import java.util.Map;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.javascript.JSFunctionDefinition;
+import org.ajax4jsf.javascript.JSReference;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.richfaces.component.UIScrollableDataTable;
+import org.richfaces.renderkit.ScriptOptions;
+
+public class ScrollableDataTableOptions extends ScriptOptions {
+
+ public ScrollableDataTableOptions(UIScrollableDataTable grid) {
+ super(grid);
+ FacesContext context = FacesContext.getCurrentInstance();
+
+ String id = grid.getBaseClientId(context);
+
+ addOption("client_id", id);
+
+ if(grid.getFacets().containsKey("splash")){
+ UIComponent splash = grid.getFacet("splash");
+ String splash_id = splash.getClientId(context);
+ addOption("splash_id", splash_id);
+ }
+
+ int columnCount = grid.getChildCount();
+
+ addOption("columnsCount", new Integer(columnCount));
+ addOption("rowsCount", new Integer(grid.getRows()));
+ addEventHandler("onselectionchange");
+ addOption("ids", ScrollableDataTableRendererState.getRendererState(context).getIds());
+ addOption("hideWhenScrolling");
+
+
+ JSFunctionDefinition functionDefinition = new JSFunctionDefinition();
+
+ JSReference sortEvent = new JSReference("event");
+ functionDefinition.addParameter(sortEvent);
+ functionDefinition.addToBody(onSortAjaxUpdate(context, grid));
+
+ addOption("onSortAjaxUpdate", functionDefinition);
+
+ }
+
+ public String onSortAjaxUpdate(FacesContext context, UIScrollableDataTable grid){
+
+ JSReference sortColumn = new JSReference("event.column");
+ JSReference sortOrder = new JSReference("event.order");
+ JSReference sortStartRow = new JSReference("event.startRow");
+ JSReference sortIndex = new JSReference("event.index");
+
+ Map options = AjaxRendererUtils.buildEventOptions(context, grid);
+
+ Map parametersMap = (Map)options.get("parameters");
+ String id = grid.getClientId(context);
+ parametersMap.put(id + ":sortColumn", sortColumn);
+ parametersMap.put(id + ":sortOrder", sortOrder);
+ parametersMap.put(id + ":sortStartRow", sortStartRow);
+ parametersMap.put(id + ":sortIndex", sortIndex);
+ options.put("parameters", parametersMap);
+
+ JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
+ options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, AjaxFunctionBuilder.SORT));
+ function.addParameter(options);
+ String completeFunction = function.toScript() + "; return false;";
+
+ return completeFunction;
+ }
+
+
+}
\ No newline at end of file
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableRendererState.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableRendererState.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableRendererState.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,432 @@
+/**
+ *
+ */
+package org.richfaces.renderkit.html;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+
+import javax.faces.FacesException;
+import javax.faces.component.NamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.richfaces.component.UIScrollableDataTable;
+
+/**
+ * bean to store current {@link com.exadel.vcp.components.datagrid.UIDataGrid } information
+ * in request map. For nested grids, it support push/pop state saving.
+ * In {@link javax.faces.render.Renderer#encodeBegin(javax.faces.context.FacesContext, javax.faces.component.UIComponent)} method
+ * must be created instance of this bean , or, if it already exist in request map - push information.
+ * at the end of encodeEnd call, bean must be pop information or removed.
+ * @author shura
+ *
+ */
+public class ScrollableDataTableRendererState implements Serializable {
+
+ public static final String DATA_GRID_RENDERER_STATE = ScrollableDataTableRendererState.class.getName();
+
+ private boolean fake;
+
+ private HashSet ids = new HashSet();
+
+ private String rowClasses[];
+
+ private int rowClassesSize;
+
+ private String columnClasses[];
+
+ private int columnClassesSize;
+
+ private int _rowIndex = 0;
+
+ private int _cellIndex = 0;
+
+ private int _columns = 0;
+
+ private Collection collection;
+
+ private Integer sepOffset;
+
+ private String _cell_id_prefix;
+
+ private int sumWidth = 0;
+
+ private boolean header = false;
+
+ private String _column_type;
+
+ private int _frozenColumnCount = -1;
+
+ private AjaxContext ajaxContext;
+
+ private String part;
+
+ private boolean _frozenPart = false;
+
+ private ResponseWriter writer;
+
+ private UIScrollableDataTable _grid;
+
+ private String clientId;
+
+ private String _cachedClientId;
+
+ private ScrollableDataTableRendererState _previousState = null;
+
+ private Object rowKey;
+
+ private static final long serialVersionUID = 2129605586975025578L;
+
+
+ /**
+ * Get current grid state from JSF context
+ * @param context
+ * @return current data grid state, or null if not saved.
+ */
+ public static ScrollableDataTableRendererState getRendererState(FacesContext context) throws FacesException {
+ if(null == context){
+ throw new NullPointerException("Context for grid state is null");
+ }
+ ScrollableDataTableRendererState state = (ScrollableDataTableRendererState) context.getExternalContext().getRequestMap().get(DATA_GRID_RENDERER_STATE);
+// if( null == state){
+// throw new FacesException("State for current grid not stored in context");
+// }
+ return state;
+ }
+
+ /**
+ * Create new state for current grid. If state exist, store previsius in field of created.
+ * @param context
+ * @param grid
+ * @return new state for grid.
+ */
+ public static ScrollableDataTableRendererState createState(FacesContext context, UIScrollableDataTable grid){
+ if(null == context){
+ throw new NullPointerException("Context for grid state is null");
+ }
+ ScrollableDataTableRendererState oldState = getRendererState(context);
+ ScrollableDataTableRendererState state = new ScrollableDataTableRendererState(context,oldState,grid);
+ state.setColumnClasses(grid.getAttributes().get("columnClasses"));
+ state.setRowClasses(grid.getAttributes().get("rowClasses"));
+ context.getExternalContext().getRequestMap().put(DATA_GRID_RENDERER_STATE,state);
+ return state;
+ }
+
+ /**
+ * Restore previsius state for gred, or clear request parameter.
+ * @param context
+ */
+ public static void restoreState(FacesContext context) {
+ if (null == context) {
+ throw new NullPointerException("Context for grid state is null");
+ }
+ ScrollableDataTableRendererState state = getRendererState(context);
+ if (null == state) {
+ throw new FacesException(
+ "State for current grid not saved in context");
+ }
+ ScrollableDataTableRendererState previsiosState = state.getPreviousState();
+ if (null != previsiosState) {
+ context.getExternalContext().getRequestMap().put(DATA_GRID_RENDERER_STATE,
+ previsiosState);
+ } else {
+ context.getExternalContext().getRequestMap().remove(DATA_GRID_RENDERER_STATE);
+ }
+ }
+ /**
+ * Create state for current grid ( and store previsios state in field ).
+ * @param previsiosState
+ */
+ public ScrollableDataTableRendererState(FacesContext context, ScrollableDataTableRendererState previsiosState, UIScrollableDataTable grid) {
+ super();
+ _grid = grid;
+ _cachedClientId = grid.getClientId(context);
+ clientId = _cachedClientId;
+ _previousState = previsiosState;
+ if(AjaxRendererUtils.isAjaxRequest(context)){
+ }
+
+ Map attrs = grid.getAttributes();
+ }
+
+ public String getCurrentCellId(FacesContext context){
+ return getGrid().getClientId(context)+NamingContainer.SEPARATOR_CHAR+"row"+getRowIndex()+
+ NamingContainer.SEPARATOR_CHAR+"col"+getCellIndex();
+ }
+
+ /**
+ * @return Returns the cellIndex.
+ */
+ public int getCellIndex() {
+ return _cellIndex;
+ }
+
+ /**
+ * @param cellIndex The cellIndex to set.
+ */
+ public void setCellIndex(int cellIndex) {
+ _cellIndex = cellIndex;
+ }
+
+ /**
+ * Increment cells counter
+ * @return next cell number.
+ */
+
+ public int nextCell(){
+ return ++_cellIndex;
+ }
+
+
+ /**
+ * @return Returns the columns.
+ */
+ public int getColumns() {
+ return _columns;
+ }
+
+ /**
+ * @param columns The columns to set.
+ */
+ public void setColumns(int columns) {
+ _columns = columns;
+ }
+
+ /**
+ * @return Returns the grid.
+ */
+ public UIScrollableDataTable getGrid() {
+ return _grid;
+ }
+
+ /**
+ * @param grid The grid to set.
+ */
+ public void setGrid(UIScrollableDataTable grid) {
+ _grid = grid;
+ }
+
+ /**
+ * @return Returns the previsiosState.
+ */
+ public ScrollableDataTableRendererState getPreviousState() {
+ return _previousState;
+ }
+
+ /**
+ * @param previsiosState The previsiosState to set.
+ */
+ public void setPreviousState(ScrollableDataTableRendererState previsiosState) {
+ _previousState = previsiosState;
+ }
+
+ /**
+ * @return Returns the rowIndex.
+ */
+ public int getRowIndex() {
+ if(_rowIndex >= _grid.getRows()){
+ _rowIndex = 0;
+ }
+ return _rowIndex;
+ }
+
+ /**
+ * Increment current row counter.
+ * @return new row number.
+ */
+ public int nextRow(){
+ _rowIndex = _rowIndex + 1;
+ return _rowIndex;
+ }
+
+ /**
+ * @param rowIndex The rowIndex to set.
+ */
+ public void setRowIndex(int rowIndex) {
+ _rowIndex = rowIndex;
+ }
+
+
+ /**
+ * @return the _cachedClientId
+ */
+ public String getCachedClientId() {
+ return _cachedClientId;
+ }
+
+
+ private StringBuffer buffer = new StringBuffer();
+
+ /**
+ * @return the buffer
+ */
+ public StringBuffer getBuffer() {
+ buffer.setLength(0);
+ return buffer;
+ }
+
+ /**
+ * @return the rowKey
+ */
+ public Object getRowKey() {
+ return rowKey;
+ }
+
+ /**
+ * @param rowKey the rowKey to set
+ */
+ public void setRowKey(Object rowKey) {
+ this.rowKey = rowKey;
+ }
+
+ public boolean isFrozenColumn() {
+ return _frozenColumnCount <= 0 ? false:true;
+ }
+
+ public void setFrozenColumnCount(int columnCount) {
+ _frozenColumnCount = columnCount;
+ }
+
+ public int getFrozenColumnCount() {
+ return _frozenColumnCount;
+ }
+
+ public boolean isFrozenPart() {
+ return _frozenPart;
+ }
+
+ public void setFrozenPart(boolean part) {
+ _frozenPart = part;
+ }
+
+ public String getCellIdPrefix() {
+ return _cell_id_prefix;
+ }
+
+ public void setCellIdPrefix(String _id_prefix) {
+ this._cell_id_prefix = _id_prefix;
+ }
+
+ public String getColumnType() {
+ return _column_type;
+ }
+
+ public void setColumType(String _column_type) {
+ this._column_type = _column_type;
+ }
+
+ public AjaxContext getAjaxContext() {
+ return ajaxContext;
+ }
+
+ public void setAjaxContext(AjaxContext ajaxContext) {
+ this.ajaxContext = ajaxContext;
+ }
+
+ public ResponseWriter getWriter() {
+ return writer;
+ }
+
+ public void setWriter(ResponseWriter writer) {
+ this.writer = writer;
+ }
+
+ public String getClientId(){
+ return clientId;
+ }
+
+ public void setClientId(String clientId){
+ this.clientId = clientId;
+ }
+
+ public boolean isHeader() {
+ return header;
+ }
+
+ public void setHeader(boolean header) {
+ this.header = header;
+ }
+
+ public String getPart() {
+ return part;
+ }
+
+ public void setPart(String part) {
+ this.part = part;
+ }
+
+ public int getSumWidth() {
+ return sumWidth;
+ }
+
+ public void setSumWidth(int sumWidth) {
+ this.sumWidth = sumWidth;
+ }
+
+ public Integer getSepOffset() {
+ return sepOffset;
+ }
+
+ public void setSepOffset(Integer sepOffset) {
+ this.sepOffset = sepOffset;
+ }
+
+ public Collection getCollection() {
+ return collection;
+ }
+
+ public void setCollection(Collection collection) {
+ this.collection = collection;
+ }
+
+ public boolean isFake() {
+ return fake;
+ }
+
+ public void setFake(boolean fake) {
+ this.fake = fake;
+ }
+
+ public String getColumnClass(int index) {
+ if(columnClasses != null) {
+ return columnClasses[index % columnClassesSize];
+ } else {
+ return "";
+ }
+ }
+
+ public void setColumnClasses(Object columnClasses) {
+ if(columnClasses != null) {
+ this.columnClasses = ((String)columnClasses).split(",");
+ columnClassesSize = this.columnClasses.length;
+ }
+ }
+
+ public String getRowClass(int index) {
+ if(rowClasses != null) {
+ return rowClasses[index % rowClassesSize];
+ } else {
+ return "";
+ }
+ }
+
+ public void setRowClasses(Object rowClasses) {
+ if(rowClasses != null) {
+ this.rowClasses = ((String)rowClasses).split(",");
+ rowClassesSize = this.rowClasses.length;
+ }
+ }
+
+ public HashSet getIds() {
+ return ids;
+ }
+
+ public void addId(String id) {
+ ids.add(id);
+ }
+}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableScrollData.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableScrollData.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableScrollData.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,52 @@
+/**
+ *
+ */
+package org.richfaces.renderkit.html;
+
+/**
+ * @author Anton Belevich
+ * Class for storing response options
+ */
+public class ScrollableDataTableScrollData {
+
+ private int index;
+
+ private int startRow;
+
+ private int count;
+
+
+
+ public ScrollableDataTableScrollData(int index, int startRow, int count) {
+
+ this.index = index;
+
+ this.startRow = startRow;
+
+ this.count = count;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public void setIndex(int index) {
+ this.index = index;
+ }
+
+ public int getStartRow() {
+ return startRow;
+ }
+
+ public void setStartRow(int startRow) {
+ this.startRow = startRow;
+ }
+}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableUtils.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableUtils.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableUtils.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,37 @@
+/**
+ *
+ */
+package org.richfaces.renderkit.html;
+
+import javax.faces.component.UIComponent;
+
+import org.richfaces.component.UIScrollableDataTable;
+
+/**
+ * @author Maksim Kaszynski
+ *
+ */
+public class ScrollableDataTableUtils {
+
+ public static final String FROZEN_COL_COUNT_ATTR = "frozenColCount";
+ public static final String CLIENT_ROW_KEY = "clientIndex";
+
+ public static int getFrozenColumnsCount(UIScrollableDataTable grid) {
+ return getIntOr0(grid, FROZEN_COL_COUNT_ATTR);
+ }
+
+ public static int getClientRowIndex(UIScrollableDataTable grid) {
+ return getIntOr0(grid, CLIENT_ROW_KEY);
+ }
+
+ public static int getIntOr0(UIComponent grid, String attribute) {
+ Object value = grid.getAttributes().get(attribute);
+ int i = 0;
+ if (value instanceof Number) {
+ i = ((Number) value).intValue();
+ }
+
+ return i;
+ }
+
+}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,806 +0,0 @@
-package org.richfaces.renderkit.html;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.javascript.JSFunction;
-import org.ajax4jsf.model.DataVisitor;
-import org.ajax4jsf.renderkit.AjaxRendererUtils;
-import org.ajax4jsf.renderkit.ComponentVariables;
-import org.ajax4jsf.renderkit.ComponentsVariableResolver;
-import org.ajax4jsf.renderkit.RendererBase;
-import org.ajax4jsf.renderkit.RendererUtils.HTML;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.richfaces.component.Column;
-import org.richfaces.component.UIScrollableGrid;
-import org.richfaces.event.scroll.ScrollEvent;
-import org.richfaces.event.sort.SortEvent;
-import org.richfaces.model.SortField;
-import org.richfaces.model.SortOrder;
-import org.richfaces.renderkit.CompositeRenderer;
-import org.richfaces.renderkit.RendererContributor;
-import org.richfaces.renderkit.html.response.GridScrollSettings;
-import org.richfaces.utils.TemplateLoader;
-
-
-
-/**
- * @author Anton Belevich
- *
- */
-
-public abstract class ScrollableGridBaseRenderer extends CompositeRenderer {
-
- public final String PARTIAL_UPDATE= "partialUpdate";
- public final String UPDATE_HEADER = "updateHeader";
-
- public final String FOOTER_PART = "footer";
-
- public final String HEADER_PART = "header";
-
- private final String COLUMN_FROZEN_TYPE = "frozen";
-
- private final String COLUMN_NORMAL_TYPE = "normal";
-
- private RendererBase cellTemplate = null;
-
- private RendererBase headerCellTemplate = null;
-
- private RendererBase footerCellTemplate = null;
-
- private RendererBase headerItselfTemplate = null;
-
- private final Log log = LogFactory.getLog(ScrollableGridBaseRenderer.class);
-
- private final ColumnVisitor columnsWidthCounter = new ColumnVisitor(){
-
- public int visit(FacesContext context, UIComponent column, ResponseWriter writer, GridRendererState state) throws IOException {
-
- int prevWidth = 0;
- int width = 0;
-
-
- String widthPx = (String)column.getAttributes().get("width");
- prevWidth = state.getSumWidth();
-
- if(widthPx.endsWith("px")){
- width = prevWidth + Integer.parseInt(widthPx.substring(0, widthPx.indexOf("px")));
- }
-
- state.setSumWidth(width);
- return 1;
- }
- };
-
- private final ColumnVisitor colsRenderer = new ExtendedColumnVisitor(){
-
- public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, GridRendererState state) throws IOException {
- writer.startElement("col", column);
- getUtils().writeAttribute(writer, "width", column.getAttributes().get("width"));
- getUtils().writeAttribute(writer, "style", column.getAttributes().get("style"));
- int cell_index = state.getCellIndex();
- Object columnClass = state.getColumnClass(cell_index);
- if(columnClass!=null) getUtils().writeAttribute(writer, "class", columnClass);
-
- writer.endElement("col");
- }
- };
-
- private final ColumnVisitor headerCellRenderer = new ExtendedColumnVisitor(){
-
- public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, GridRendererState state) throws IOException {
-
-
- int cell_index = state.getCellIndex();
- String client_id = state.getClientId();
- state.addId(column.getId());
- headerCellTemplate = getHeaderCellTemplate();
-
- ComponentVariables variables =
- ComponentsVariableResolver.getVariables(headerCellTemplate, column);
- String widthPx = (String)column.getAttributes().get("width");
- int width = Integer.parseInt(widthPx.substring(0, widthPx.indexOf("px")));
-
-
- int sepOffset = 0;
-
- if(state.isFrozenColumn()){
- sepOffset = state.getSepOffset().intValue() + width;
- }else{
- sepOffset = state.getSepOffset().intValue() + width + 1;
- state.setSepOffset(new Integer(sepOffset));
- }
-
- variables.setVariable("client_id", client_id);
- variables.setVariable("cell_index", new Integer(cell_index));
- variables.setVariable("sepOffset", new Integer(sepOffset));
-
- headerCellTemplate.encodeBegin(context, column);
- headerRenderer.visit(context, column, writer, state);
- headerCellTemplate.encodeEnd(context, column);
- }
- };
-
- private final ColumnVisitor headerRenderer = new ColumnVisitor() {
-
- public int visit(FacesContext context, UIComponent column,
- ResponseWriter writer, GridRendererState state)
- throws IOException {
-
- ComponentVariables variables =
- ComponentsVariableResolver.getVariables(getHeaderItselfTemplate(), column);
-
- int cell_index = state.getCellIndex();
- String client_id = state.getClientId();
- Boolean sorting = getColumnSorting(state.getGrid(), cell_index);
-
- if (sorting != null) {
- if (sorting.booleanValue()) {
- variables.setVariable("sortAscending", Boolean.TRUE);
- } else {
- variables.setVariable("sortDescending", Boolean.TRUE);
- }
- }
- variables.setVariable("client_id", client_id);
- variables.setVariable("cell_index", new Integer(cell_index));
-
- getHeaderItselfTemplate().encodeBegin(context, column);
-
- UIComponent header = column.getFacet(HEADER_PART);
-
- if(header != null){
- renderChild(context, header);
- }
- getHeaderItselfTemplate().encodeEnd(context, column);
-
- return 0;
- }
-
-
- private Boolean getColumnSorting(UIScrollableGrid grid, int columnIndex) {
-
- Boolean sorting = null;
-
- UIComponent column =
- (UIComponent) grid.getChildren().get(columnIndex);
-
- //TODO: replace with getName?
- String name = column.getId();
-
- SortOrder sortOrder = grid.getSortOrder();
-
- if (sortOrder != null) {
- SortField[] sortFields = sortOrder.getFields();
-
- if (sortFields != null) {
- for (int i = 0; i < sortFields.length && sorting == null; i++) {
- SortField sortField = sortFields[i];
-
- if ((name != null && name.equals(sortField.getName()))
- || columnIndex == sortField.getIndex()) {
- sorting = sortField.getAscending();
- }
- }
- }
- }
-
- return sorting;
- }
-
- };
-
- private final ColumnVisitor footerCellRenderer = new ExtendedColumnVisitor(){
-
- public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, GridRendererState state) throws IOException {
-
- int cell_index = state.getCellIndex();
- String client_id = state.getClientId();
-
- footerCellTemplate = getFooterCellTemplate();
-
- ComponentVariables variables = ComponentsVariableResolver.getVariables(footerCellTemplate, column);
- variables.setVariable("client_id", client_id);
- variables.setVariable("cell_index", new Integer(cell_index));
-
-
- UIComponent component = column.getFacet(FOOTER_PART);
- if(component != null){
- footerCellTemplate.encodeBegin(context, column);
- renderChild(context, component);
- footerCellTemplate.encodeEnd(context, column);
- }
- }
- };
-
- private final ColumnVisitor cellRenderer = new ExtendedColumnVisitor(){
-
- public void renderContent(FacesContext context, UIComponent column, ResponseWriter writer, GridRendererState state) throws IOException {
-
- String cell_id = state.getRowIndex()+ "_" + state.getCellIndex();
- if (log.isTraceEnabled()) {
- log.trace("cell_index: " + cell_id);
- }
-
- String client_id = state.getClientId();
- int cell_index = state.getCellIndex();
- cellTemplate = getCellTemplate();
-
- ComponentVariables variables = ComponentsVariableResolver.getVariables(cellTemplate, column);
- variables.setVariable("cell_id",cell_id);
- variables.setVariable("client_id", client_id);
- variables.setVariable("cell_index", new Integer(cell_index));
- variables.setVariable("columnClass", state.getColumnClass(cell_index));
-
- cellTemplate.encodeBegin(context, column);
- if(!state.isFake()) {
- renderChildren(context, column);
- }
- cellTemplate.encodeEnd(context, column);
- }
-
- };
-
-
- private final DataVisitor rowsRenderer = new DataVisitor(){
-
- public void process(FacesContext context, Object rowKey, Object argument) throws IOException {
-
- GridRendererState state = (GridRendererState)argument;
- UIScrollableGrid grid = state.getGrid();
-
- grid.setRowKey(rowKey);
-
- if(grid.isRowAvailable() || state.isFake()){
- String row_id;
-
- int index = state.getRowIndex();
-
- //state.setRowIndex(index);
-
- String baseClientId = grid.getBaseClientId(context);
-
- if(state.isFrozenPart()){
- row_id = baseClientId + ":f:" + index;
- }else{
- row_id = baseClientId + ":n:" + index;
- }
-
- ResponseWriter writer = context.getResponseWriter();
- writer.startElement(HTML.TR_ELEMENT, grid);
- state.setFrozenColumnCount(GridUtils.getFrozenColumnsCount(grid));
- getUtils().writeAttribute(writer, "id",row_id);
- getUtils().writeAttribute(writer, "class","dr-sgrid-rb rich-sgrid-row" + state.getRowClass(index));
-
- if (log.isDebugEnabled()) {
- log.debug("rowIndex : " + index);
- }
-
- ColumnWalker.iterateOverColumns(context, grid, cellRenderer, writer, state);
- if(!state.isFrozenPart()){
- writer.startElement("td", grid);
- getUtils().writeAttribute(writer, "class","dr-sgrid-bc rich-sgrid-row" + state.getColumnClass(state.getCellIndex()));
- writer.endElement("td");
- }
- writer.endElement(HTML.TR_ELEMENT);
- state.nextRow();
- state.setCellIndex(0);
-
- }
- }
- };
-
- private final DataVisitor ajaxRowsRenderer = new DataVisitor(){
-
-
- public void process(FacesContext context, Object rowKey, Object argument) throws IOException {
-
- int columnsCount = 0;
-
- boolean frozenTRRendered = false;
-
- boolean normalTRRendered = false;
-
- GridRendererState state = (GridRendererState)argument;
- AjaxContext ajaxContext = state.getAjaxContext();
- ajaxContext.getResponseData();
-
- UIScrollableGrid grid = state.getGrid();
- Collection collection = grid.getResponseData();
-
- grid.setRowKey(rowKey);
- ResponseWriter writer = context.getResponseWriter();
- state.setFrozenColumnCount(GridUtils.getFrozenColumnsCount(grid));
-
- String row_id = null;
-
-
- for (Iterator iter = grid.getChildren().iterator(); iter.hasNext(); ) {
- UIComponent kid = (UIComponent) iter.next();
-
- if (kid.isRendered()) {
-
- if (kid instanceof Column){
- String baseClientId = grid.getBaseClientId(context);
-
- if(state.isFrozenColumn() && !frozenTRRendered){
-
- state.setFrozenPart(true);
- frozenTRRendered = true;
-
- row_id = baseClientId + ":f:" + state.getRowIndex();
- writer.startElement("tr", grid);
- getUtils().writeAttribute(writer, "class","dr-sgrid-rb rich-sgrid-row" + state.getRowClass(state.getRowIndex()));
- getUtils().writeAttribute(writer,"id",row_id);
- collection.add(row_id);
-
- }else if(!state.isFrozenColumn() && !normalTRRendered){
-
- if(frozenTRRendered){
- writer.endElement("tr");
- }
-
- state.setFrozenPart(false);
- row_id = baseClientId + ":n:" + state.getRowIndex();
-
- writer.startElement("tr", grid);
- getUtils().writeAttribute(writer,"id",row_id);
- getUtils().writeAttribute(writer, "class","dr-sgrid-rb rich-sgrid-row" + state.getRowClass(state.getRowIndex()));
- normalTRRendered = true;
- collection.add(row_id);
-
- }
-
- columnsCount += cellRenderer.visit(context, kid, writer, state);
-// columnsCount += cellRenderer.visit(context, column, writer, state);
-
-
-
-
- state.nextCell();
-
- }
-
- }
-
- }
-
-// if(!state.isFrozenPart()){
-// writer.startElement("td", grid);
-// getUtils().writeAttribute(writer, "class","dr-sgrid-bc " + state.getColumnClass(state.getCellIndex()));
-// writer.endElement("td");
-// }
-
- writer.endElement("tr");
- state.setCellIndex(0);
- state.nextRow();
- }
- };
-
-
- public ScrollableGridBaseRenderer() {
- addContributor(new SelectionRendererContributor());
- }
-
- public static String getJavaScriptVarName(FacesContext context, UIScrollableGrid grid) {
-
- String name = grid.getScriptVar();
- if (name == null) {
- String id = grid.getBaseClientId(context);
- name = "Richfaces_ScrollableGrid_" + id.replaceAll("[^A-Za-z0-9_]", "_");
- }
-
- return "window." + name;
- }
-
- public String createClientScrollableGrid(FacesContext context, UIScrollableGrid grid) {
-
- ScrollableGridOptions options = new ScrollableGridOptions(grid);
-
-
- mergeScriptOptions(options, context, grid);
-
- JSFunction function = new JSFunction("new ClientUI.controls.grid.ScrollableGrid");
- function.addParameter(options);
- return function.toScript();
- }
-
- protected String getScriptContributions(FacesContext context, UIScrollableGrid grid) {
- return super.getScriptContributions(getJavaScriptVarName(context, grid), context, grid);
- }
-
- public boolean getRendersChildren() {
- return true;
- }
-
- public void renderGridBody(FacesContext context, UIScrollableGrid grid, boolean isFrozen) throws IOException{
-
- final GridRendererState state = GridRendererState.getRendererState(context);
-
- if(isFrozen){
- state.setColumType(COLUMN_FROZEN_TYPE);
- }else{
- state.setColumType(COLUMN_NORMAL_TYPE);
- }
-
- if (log.isTraceEnabled()) {
- log.trace("ScrollableGridBaseRenderer.renderGridBody(context, grid, isFrozen)");
- }
-
- state.setFrozenColumnCount(GridUtils.getFrozenColumnsCount(grid));
- state.setFrozenPart(isFrozen);
- state.setClientId(grid.getClientId(context));
-
- grid.walk(context, rowsRenderer, state);
-
- int fakeRowsCount = grid.getRows() - grid.getRowCount();
- state.setFake(true);
- for (int i = 0; i < fakeRowsCount; i++) {
- rowsRenderer.process(context, null, state);
- }
-
- state.setFake(false);
- grid.setRowKey(null);
- }
-
- public void renderHeaders(FacesContext context, UIScrollableGrid grid, boolean isFrozen)throws IOException{
-
- ResponseWriter writer = context.getResponseWriter();
- final GridRendererState state = GridRendererState.getRendererState(context);
-
- if(isFrozen){
- state.setColumType(COLUMN_FROZEN_TYPE);
- }else{
- state.setColumType(COLUMN_NORMAL_TYPE);
- }
-
- state.setClientId(grid.getClientId(context));
- state.setPart(HEADER_PART);
- state.setFrozenColumnCount(GridUtils.getFrozenColumnsCount(grid));
- state.setFrozenPart(isFrozen);
- state.setClientId(grid.getClientId(context));
- state.setSepOffset(new Integer(0));
-
- ColumnWalker.iterateOverColumns(context, grid, headerCellRenderer, writer, state);
- }
-
- public void renderCols(FacesContext context, UIScrollableGrid grid, boolean isFrozen) throws IOException{
-
- ResponseWriter writer = context.getResponseWriter();
- final GridRendererState state = GridRendererState.getRendererState(context);
-
- if(isFrozen){
- state.setColumType(COLUMN_FROZEN_TYPE);
- }else{
- state.setColumType(COLUMN_NORMAL_TYPE);
- }
-
- state.setClientId(grid.getClientId(context));
- state.setFrozenColumnCount(GridUtils.getFrozenColumnsCount(grid));
- state.setFrozenPart(isFrozen);
- ColumnWalker.iterateOverColumns(context, grid, colsRenderer, writer, state);
- }
-
-
- public void renderFooters(FacesContext context, UIScrollableGrid grid, boolean isFrozen) throws IOException{
-
- ResponseWriter writer = context.getResponseWriter();
- final GridRendererState state = GridRendererState.getRendererState(context);
-
- if(isFrozen){
- state.setColumType(COLUMN_FROZEN_TYPE);
- }else{
- state.setColumType(COLUMN_NORMAL_TYPE);
- }
-
- state.setClientId(grid.getClientId(context));
- state.setFrozenColumnCount(GridUtils.getFrozenColumnsCount(grid));
- state.setFrozenPart(isFrozen);
- int colsCount = ColumnWalker.iterateOverColumns(context, grid, footerCellRenderer, writer, state);
- int rowsCount = grid.getRowCount();
-
- ComponentVariables variables = ComponentsVariableResolver.getVariables(this, grid);
- variables.setVariable("rows_count", new Integer(rowsCount));
- variables.setVariable("columns_count", new Integer(colsCount));
-
- }
-
- public void setUpState(FacesContext context, UIScrollableGrid grid) {
- GridRendererState.createState(context, grid);
- }
-
- public void tearDownState(FacesContext context, UIScrollableGrid grid){
- GridRendererState.restoreState(context);
- }
-
-
- public String getRowsAjaxUpdate(FacesContext context, UIScrollableGrid grid){
-
- JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
- Map options = AjaxRendererUtils.buildEventOptions(context, grid);
- options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, AjaxFunctionBuilder.SCROLL));
- Map parametersMap = (Map)options.get("parameters");
- parametersMap.put(grid.getBaseClientId(context) + ":scroll", "");
- function.addParameter(options);
- String completeFunction = function.toScript()+"; return false;";
-
- return completeFunction;
-
- }
-
-
- protected void doDecode(FacesContext context, UIComponent component) {
-
- super.doDecode(context, component);
-
- component.getAttributes().remove(PARTIAL_UPDATE);
- component.getAttributes().remove(UPDATE_HEADER);
-
-
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
-
- if(component instanceof UIScrollableGrid){
-
- UIScrollableGrid grid = (UIScrollableGrid)component;
- ExternalContext externalContext = context.getExternalContext();
- String clientId = grid.getClientId(context);
- boolean sorted = false;
- Map parameters = externalContext.getRequestParameterMap();
-
- String s_id = clientId + ":si";
- if(parameters.containsKey(s_id)){
- String options = (String)parameters.get(s_id);
- grid.setScrollPos(options);
- }
-
-
- if(parameters.containsKey(clientId + ":sortColumn") &&
- parameters.containsKey(clientId + ":sortStartRow") &&
- parameters.containsKey(clientId + ":sortIndex") &&
- parameters.containsKey(clientId + ":sortOrder")){
-
- int sortColumn = Integer.parseInt((String)parameters.get(clientId + ":sortColumn"));
- int sortDataIndex = Integer.parseInt((String)parameters.get(clientId + ":sortIndex"));
- Integer sortStartRow = Integer.valueOf((String)parameters.get(clientId + ":sortStartRow"));
-
- Column column = (Column)grid.getChildren().get(sortColumn);
-
- if(column.isSortable()){
-
- sorted = true;
- SortEvent sortEvent = new SortEvent(grid,sortColumn, grid.getRows(), sortDataIndex);
-
- sortEvent.setAttribute(GridUtils.CLIENT_ROW_KEY,sortStartRow);
-
- if (ajaxContext.isAjaxRequest()) {
- sortEvent.setAttribute(PARTIAL_UPDATE, Boolean.TRUE);
- sortEvent.setAttribute(UPDATE_HEADER, Boolean.TRUE);
- }
-
-
- sortEvent.queue();
- }
- }
-
-
- if(parameters.containsKey(clientId + ":scroll") && !sorted){
-
- String submitedState = (String)parameters.get(clientId + "_state_input");
- boolean isEmpty = true;
-
-
- String [] values = submitedState.split(",");
- for (int i = 0; i < values.length; i++) {
- isEmpty = isEmpty && values[i].equals("");
- }
-
- int rows = 0;
- int first = 0;
-
- if(!isEmpty){
- rows = Integer.parseInt(values[0]);
- first = Integer.parseInt(values[1]);
- ScrollEvent scrollEvent = new ScrollEvent(grid,rows,first);
-
- scrollEvent.setAttribute(GridUtils.CLIENT_ROW_KEY,Integer.valueOf(values[2]));
-
- if (ajaxContext.isAjaxRequest()) {
- scrollEvent.setAttribute(PARTIAL_UPDATE, Boolean.TRUE);
- }
-
- scrollEvent.queue();
-
- }
- }
-
-
- }
-
-
- }
-
- public void renderAjaxChildren(FacesContext context, UIComponent component)throws IOException{
-
- UIScrollableGrid grid = (UIScrollableGrid)component;
-
-
-
- GridRendererState state = GridRendererState.createState(context, grid);
-
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
- String client_id = grid.getClientId(context);
-
- state.setClientId(client_id);
- state.setAjaxContext(ajaxContext);
- state.setRowIndex(GridUtils.getClientRowIndex(grid));
-
- if (log.isDebugEnabled()) {
- log.debug("ScrollableGridBaseRenderer.renderAjaxChildren()");
- }
-
- grid.getResponseData().clear();
-
- ResponseWriter writer = context.getResponseWriter();
- writer.startElement("table", grid);
- writer.startElement("tbody", grid);
-
- grid.walk(context, ajaxRowsRenderer, state);
-
- writer.endElement("tbody");
- writer.endElement("table");
-
- GridRendererState.restoreState(context);
- grid.setRowKey(null);
-
- ajaxContext.setResponseData(grid.getResponseData());
-
- ajaxContext.getAjaxRenderedAreas().remove(grid.getClientId(context));
- GridScrollSettings options = createOptions(grid);
- ajaxContext.getResponseDataMap().put("options", options);
-
- //Then call contributors to write additional HTML content
- contributorsEncodeHere(context, grid);
-
- if (shouldUpdateHeader(component)) {
- ColumnWalker.iterateOverColumns(context, component, headerRenderer, writer, new GridRendererState(context, null, grid));
- }
-
-
- }
-
- private GridScrollSettings createOptions(UIScrollableGrid grid){
-
- int index = grid.getFirst();
- int startRow = GridUtils.getClientRowIndex(grid);
- int count = grid.getRows();
-
- GridScrollSettings options = new GridScrollSettings(index, startRow, count);
-
- return options;
- }
-
- private boolean onlyPartialUpdateNeeded(UIComponent grid) {
- Boolean b = (Boolean) grid.getAttributes().get(PARTIAL_UPDATE);
- return b != null && b.booleanValue() && AjaxContext.getCurrentInstance().isAjaxRequest();
- }
-
- private boolean shouldUpdateHeader(UIComponent grid) {
- Boolean b = (Boolean) grid.getAttributes().get(UPDATE_HEADER);
- return b != null && b.booleanValue() && AjaxContext.getCurrentInstance().isAjaxRequest();
- }
-
- public void encodeChildren(FacesContext context, UIComponent component
- ) throws IOException {
-
- if(onlyPartialUpdateNeeded(component)){
- renderAjaxChildren(context, component);
- }else{
- super.encodeChildren(context, component);
- }
-
- }
-
- public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
-
- if(component instanceof UIScrollableGrid){
- UIScrollableGrid grid = (UIScrollableGrid)component;
- setUpState(context, grid);
- }
-
- if(!onlyPartialUpdateNeeded(component)){
- super.encodeBegin(context, component);
- }
- }
-
- public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
-
- if(component instanceof UIScrollableGrid){
-
- if(!onlyPartialUpdateNeeded(component)){
- super.encodeEnd(context, component);
- }
- }
- }
-
- public void setUpColumnsWidth(FacesContext context, UIScrollableGrid grid) throws IOException{
- GridRendererState state = GridRendererState.getRendererState(context);
- state.setFrozenColumnCount(GridUtils.getFrozenColumnsCount(grid));
- ColumnWalker.iterateOverColumns(context, grid, columnsWidthCounter, null, state);
- ComponentVariables variables = ComponentsVariableResolver.getVariables(this, grid);
- int sumWidth = state.getSumWidth() + 200;
- variables.setVariable("sumWidth", new Integer(sumWidth));
- }
-
- private RendererBase getCellTemplate() {
- if (cellTemplate == null) {
- cellTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableGridCellRenderer");
- }
- return cellTemplate;
- }
-
- private RendererBase getHeaderCellTemplate() {
-
- if (headerCellTemplate == null) {
- headerCellTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableGridHeaderCellRenderer");
- }
- return headerCellTemplate;
- }
-
- private RendererBase getFooterCellTemplate() {
-
- if (footerCellTemplate == null) {
- footerCellTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableGridFooterCellRenderer");
- }
- return footerCellTemplate;
- }
-
-
-
- private RendererBase getHeaderItselfTemplate() {
-
- if (headerItselfTemplate == null) {
- headerItselfTemplate = TemplateLoader.loadTemplate("org.richfaces.renderkit.html.ScrollableGridHeaderItselfRenderer");
- }
-
- return headerItselfTemplate;
- }
-
-
- public void renderHiddenScrollInput(FacesContext context, UIScrollableGrid grid) throws IOException{
-
- ResponseWriter writer = context.getResponseWriter();
- String id = grid.getClientId(context) + ":si";
- writer.startElement("input", grid);
-
- getUtils().writeAttribute(writer, "type", "hidden");
- getUtils().writeAttribute(writer, "name", id);
- getUtils().writeAttribute(writer, "id", id);
- getUtils().writeAttribute(writer, "value", grid.getScrollPos());
-
- writer.endElement("input");
-
- }
-
- public void contributorsEncodeHere(FacesContext context, UIScrollableGrid grid) throws IOException {
- RendererContributor [] contribs = getContributors();
-
- if (contribs != null) {
- for (int i = 0; i < contribs.length; i++) {
- RendererContributor rendererContributor = contribs[i];
-
- if (rendererContributor instanceof HTMLEncodingContributor) {
- ((HTMLEncodingContributor) rendererContributor).encode(context, grid);
- }
- }
- }
- }
-
-}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,97 +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.renderkit.html;
-
-import java.util.Map;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-import org.ajax4jsf.javascript.JSFunction;
-import org.ajax4jsf.javascript.JSFunctionDefinition;
-import org.ajax4jsf.javascript.JSReference;
-import org.ajax4jsf.renderkit.AjaxRendererUtils;
-import org.richfaces.component.UIScrollableGrid;
-import org.richfaces.renderkit.ScriptOptions;
-
-public class ScrollableGridOptions extends ScriptOptions {
-
- public ScrollableGridOptions(UIScrollableGrid grid) {
- super(grid);
- FacesContext context = FacesContext.getCurrentInstance();
-
- String id = grid.getBaseClientId(context);
-
- addOption("client_id", id);
-
- if(grid.getFacets().containsKey("splash")){
- UIComponent splash = grid.getFacet("splash");
- String splash_id = splash.getClientId(context);
- addOption("splash_id", splash_id);
- }
-
- int columnCount = grid.getChildCount();
-
- addOption("columnsCount", new Integer(columnCount));
- addOption("rowsCount", new Integer(grid.getRows()));
- addEventHandler("onselectionchange");
- addOption("ids", GridRendererState.getRendererState(context).getIds());
- addOption("hideWhenScrolling");
-
-
- JSFunctionDefinition functionDefinition = new JSFunctionDefinition();
-
- JSReference sortEvent = new JSReference("event");
- functionDefinition.addParameter(sortEvent);
- functionDefinition.addToBody(onSortAjaxUpdate(context, grid));
-
- addOption("onSortAjaxUpdate", functionDefinition);
-
- }
-
- public String onSortAjaxUpdate(FacesContext context, UIScrollableGrid grid){
-
- JSReference sortColumn = new JSReference("event.column");
- JSReference sortOrder = new JSReference("event.order");
- JSReference sortStartRow = new JSReference("event.startRow");
- JSReference sortIndex = new JSReference("event.index");
-
- Map options = AjaxRendererUtils.buildEventOptions(context, grid);
-
- Map parametersMap = (Map)options.get("parameters");
- String id = grid.getClientId(context);
- parametersMap.put(id + ":sortColumn", sortColumn);
- parametersMap.put(id + ":sortOrder", sortOrder);
- parametersMap.put(id + ":sortStartRow", sortStartRow);
- parametersMap.put(id + ":sortIndex", sortIndex);
- options.put("parameters", parametersMap);
-
- JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
- options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, AjaxFunctionBuilder.SORT));
- function.addParameter(options);
- String completeFunction = function.toScript() + "; return false;";
-
- return completeFunction;
- }
-
-
-}
\ No newline at end of file
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SelectionRendererContributor.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SelectionRendererContributor.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SelectionRendererContributor.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -17,7 +17,7 @@
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.model.DataVisitor;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
-import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.component.UIScrollableDataTable;
import org.richfaces.model.selection.ClientSelection;
import org.richfaces.model.selection.Selection;
import org.richfaces.model.selection.SimpleSelection;
@@ -35,7 +35,7 @@
public static final String CLIENT_SELECTION = "clientSelection";
public static final String getSelectionInputName(FacesContext context,
- UIScrollableGrid grid) {
+ UIScrollableDataTable grid) {
String id = grid.getBaseClientId(context) + ":s";
return id;
@@ -44,7 +44,7 @@
public void decode(FacesContext context, UIComponent component,
CompositeRenderer compositeRenderer) {
- UIScrollableGrid grid = (UIScrollableGrid) component;
+ UIScrollableDataTable grid = (UIScrollableDataTable) component;
ExternalContext externalContext = context.getExternalContext();
Map requestParamMap = externalContext.getRequestParameterMap();
@@ -70,10 +70,10 @@
- final GridRendererState state =
- GridRendererState.createState(context, grid);
+ final ScrollableDataTableRendererState state =
+ ScrollableDataTableRendererState.createState(context, grid);
- state.setRowIndex(GridUtils.getClientRowIndex(grid));
+ state.setRowIndex(ScrollableDataTableUtils.getClientRowIndex(grid));
final SimpleSelection simpleSelection = grid.getSelection() == null ? new SimpleSelection()
: (SimpleSelection) grid.getSelection();
@@ -113,7 +113,7 @@
grid.setSelection(simpleSelection);
- GridRendererState.restoreState(context);
+ ScrollableDataTableRendererState.restoreState(context);
}
/*
@@ -122,7 +122,7 @@
* @see org.richfaces.renderkit.RendererContributor#getAcceptableClass()
*/
public Class getAcceptableClass() {
- return UIScrollableGrid.class;
+ return UIScrollableDataTable.class;
}
/*
@@ -158,7 +158,7 @@
UIComponent component) {
ScriptOptions scriptOptions = new ScriptOptions(component);
scriptOptions.addOption("selectionInput", getSelectionInputName(
- context, (UIScrollableGrid) component));
+ context, (UIScrollableDataTable) component));
scriptOptions.addOption("selectedClass");
scriptOptions.addOption("activeClass");
return scriptOptions;
@@ -168,7 +168,7 @@
public void encode(FacesContext context, UIComponent component)
throws IOException {
- UIScrollableGrid grid = (UIScrollableGrid) component;
+ UIScrollableDataTable grid = (UIScrollableDataTable) component;
encodeSelection(context, grid);
writeSelection(context, grid);
@@ -188,10 +188,10 @@
}
- private void encodeSelection(FacesContext context, UIScrollableGrid grid) throws IOException {
- final GridRendererState state = GridRendererState.createState(context, grid);
+ private void encodeSelection(FacesContext context, UIScrollableDataTable grid) throws IOException {
+ final ScrollableDataTableRendererState state = ScrollableDataTableRendererState.createState(context, grid);
- state.setRowIndex(GridUtils.getClientRowIndex(grid));
+ state.setRowIndex(ScrollableDataTableUtils.getClientRowIndex(grid));
final Selection gridSelection =
grid.getSelection() == null ?
@@ -219,7 +219,7 @@
state);
- GridRendererState.restoreState(context);
+ ScrollableDataTableRendererState.restoreState(context);
grid.getAttributes().put(CLIENT_SELECTION, clientSelection);
}
@@ -231,7 +231,7 @@
* @param grid
* @throws IOException
*/
- public void writeSelection(FacesContext context, UIScrollableGrid grid)
+ public void writeSelection(FacesContext context, UIScrollableDataTable grid)
throws IOException {
Application application = context.getApplication();
Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SortIconRenderer.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SortIconRenderer.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/SortIconRenderer.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -20,11 +20,11 @@
public void renderAscIcon(FacesContext context, UIComponent component) throws IOException{
- renderFacetOrIcon(context, component, "ascIcon", "dr-sgrid-sort-asc");
+ renderFacetOrIcon(context, component, "ascIcon", "dr-sdt-sort-asc");
}
public void renderDescIcon(FacesContext context, UIComponent component) throws IOException{
- renderFacetOrIcon(context, component, "descIcon", "dr-sgrid-sort-desc");
+ renderFacetOrIcon(context, component, "descIcon", "dr-sdt-sort-desc");
}
private void renderFacetOrIcon(FacesContext context, UIComponent component, String facetName, String clazz) throws IOException{
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconBasic.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconBasic.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconBasic.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,63 @@
+package org.richfaces.renderkit.html.iconimages;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.util.Date;
+
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.resource.GifRenderer;
+import org.ajax4jsf.resource.InternetResourceBuilder;
+import org.ajax4jsf.resource.Java2Dresource;
+import org.ajax4jsf.resource.ResourceContext;
+import org.ajax4jsf.util.HtmlColor;
+import org.richfaces.skin.Skin;
+import org.richfaces.skin.SkinFactory;
+
+public abstract class ScrollableDataTableIconBasic extends Java2Dresource {
+
+ public ScrollableDataTableIconBasic() {
+ setRenderer(new GifRenderer());
+ setLastModified(new Date(InternetResourceBuilder.getInstance().getStartTime()));
+ }
+
+ public abstract Dimension calculateDimensions();
+
+ public Dimension getDimensions(FacesContext facesContext, Object data) {
+ return calculateDimensions();
+ }
+ protected Dimension getDimensions(ResourceContext resourceContext) {
+ return calculateDimensions();
+ }
+
+ protected Object getDataToStore(FacesContext context, Object data) {
+ Skin skin = SkinFactory.getInstance().getSkin(context);
+ Skin defaultSkin = SkinFactory.getInstance().getDefaultSkin(context);
+
+ Object [] stored = new Object[2];
+
+ Color col = null;
+
+ if (data!=null){
+ col = HtmlColor.decode(data.toString());
+ } else {
+ String skinParameter = "headerTextColor";
+ String headerTextColor = (String) skin.getParameter(context, skinParameter);
+ if (null == headerTextColor || "".equals(headerTextColor))
+ headerTextColor = (String) defaultSkin.getParameter(context, skinParameter);
+ col = HtmlColor.decode(headerTextColor);
+ }
+
+ stored[0] = col;
+
+ String skinParameter = "headerBackgroundColor";
+ String headerBackgroundColor = (String) skin.getParameter(context, skinParameter);
+ if (null == headerBackgroundColor || "".equals(headerBackgroundColor))
+ headerBackgroundColor = (String) defaultSkin.getParameter(context, skinParameter);
+ col = HtmlColor.decode(headerBackgroundColor);
+
+ stored[1] = col;
+
+ return stored;
+ }
+}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortAsc.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortAsc.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortAsc.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,33 @@
+package org.richfaces.renderkit.html.iconimages;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.geom.GeneralPath;
+
+import org.ajax4jsf.resource.ResourceContext;
+
+public class ScrollableDataTableIconSortAsc extends ScrollableDataTableIconBasic {
+
+ public Dimension calculateDimensions() {
+ return new Dimension(13, 4);
+ }
+
+ protected void paint(ResourceContext context, Graphics2D g2d) {
+ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
+ GeneralPath path = new GeneralPath();
+
+ path.moveTo(1,4);
+ path.lineTo(4,0);
+ path.lineTo(8,4);
+ path.closePath();
+ Object [] data = (Object[]) restoreData(context);
+ Color col = (Color)data[0];
+
+ g2d.setColor(col);
+ g2d.fill(path);
+ }
+}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortDesc.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortDesc.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSortDesc.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,33 @@
+package org.richfaces.renderkit.html.iconimages;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.geom.GeneralPath;
+
+import org.ajax4jsf.resource.ResourceContext;
+
+public class ScrollableDataTableIconSortDesc extends ScrollableDataTableIconBasic {
+
+ public Dimension calculateDimensions() {
+ return new Dimension(13, 4);
+ }
+
+ protected void paint(ResourceContext context, Graphics2D g2d) {
+ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
+ GeneralPath path = new GeneralPath();
+
+ path.moveTo(1,0);
+ path.lineTo(4,4);
+ path.lineTo(8,0);
+ path.closePath();
+ Object [] data = (Object[]) restoreData(context);
+ Color col = (Color)data[0];
+
+ g2d.setColor(col);
+ g2d.fill(path);
+ }
+}
Added: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSplit.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSplit.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableDataTableIconSplit.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,31 @@
+package org.richfaces.renderkit.html.iconimages;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+
+import org.ajax4jsf.resource.ResourceContext;
+
+public class ScrollableDataTableIconSplit extends ScrollableDataTableIconBasic {
+
+ public Dimension calculateDimensions() {
+ return new Dimension(2, 13);
+ }
+
+ protected void paint(ResourceContext context, Graphics2D g2d) {
+ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
+
+ Object [] data = (Object[]) restoreData(context);
+ Color col1 = (Color)data[0];
+ Color col2 = (Color)data[1];
+
+ g2d.setColor(col2);
+ g2d.drawLine(0, 0, 0, 12);
+ g2d.setColor(col1);
+ g2d.drawLine(1, 0, 1, 12);
+ }
+
+}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconBasic.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconBasic.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconBasic.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,63 +0,0 @@
-package org.richfaces.renderkit.html.iconimages;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.util.Date;
-
-import javax.faces.context.FacesContext;
-
-import org.ajax4jsf.resource.GifRenderer;
-import org.ajax4jsf.resource.InternetResourceBuilder;
-import org.ajax4jsf.resource.Java2Dresource;
-import org.ajax4jsf.resource.ResourceContext;
-import org.ajax4jsf.util.HtmlColor;
-import org.richfaces.skin.Skin;
-import org.richfaces.skin.SkinFactory;
-
-public abstract class ScrollableGridIconBasic extends Java2Dresource {
-
- public ScrollableGridIconBasic() {
- setRenderer(new GifRenderer());
- setLastModified(new Date(InternetResourceBuilder.getInstance().getStartTime()));
- }
-
- public abstract Dimension calculateDimensions();
-
- public Dimension getDimensions(FacesContext facesContext, Object data) {
- return calculateDimensions();
- }
- protected Dimension getDimensions(ResourceContext resourceContext) {
- return calculateDimensions();
- }
-
- protected Object getDataToStore(FacesContext context, Object data) {
- Skin skin = SkinFactory.getInstance().getSkin(context);
- Skin defaultSkin = SkinFactory.getInstance().getDefaultSkin(context);
-
- Object [] stored = new Object[2];
-
- Color col = null;
-
- if (data!=null){
- col = HtmlColor.decode(data.toString());
- } else {
- String skinParameter = "headerTextColor";
- String headerTextColor = (String) skin.getParameter(context, skinParameter);
- if (null == headerTextColor || "".equals(headerTextColor))
- headerTextColor = (String) defaultSkin.getParameter(context, skinParameter);
- col = HtmlColor.decode(headerTextColor);
- }
-
- stored[0] = col;
-
- String skinParameter = "headerBackgroundColor";
- String headerBackgroundColor = (String) skin.getParameter(context, skinParameter);
- if (null == headerBackgroundColor || "".equals(headerBackgroundColor))
- headerBackgroundColor = (String) defaultSkin.getParameter(context, skinParameter);
- col = HtmlColor.decode(headerBackgroundColor);
-
- stored[1] = col;
-
- return stored;
- }
-}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortAsc.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortAsc.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortAsc.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,33 +0,0 @@
-package org.richfaces.renderkit.html.iconimages;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics2D;
-import java.awt.RenderingHints;
-import java.awt.geom.GeneralPath;
-
-import org.ajax4jsf.resource.ResourceContext;
-
-public class ScrollableGridIconSortAsc extends ScrollableGridIconBasic {
-
- public Dimension calculateDimensions() {
- return new Dimension(13, 4);
- }
-
- protected void paint(ResourceContext context, Graphics2D g2d) {
- g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
- g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
- GeneralPath path = new GeneralPath();
-
- path.moveTo(1,4);
- path.lineTo(4,0);
- path.lineTo(8,4);
- path.closePath();
- Object [] data = (Object[]) restoreData(context);
- Color col = (Color)data[0];
-
- g2d.setColor(col);
- g2d.fill(path);
- }
-}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortDesc.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortDesc.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSortDesc.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,33 +0,0 @@
-package org.richfaces.renderkit.html.iconimages;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics2D;
-import java.awt.RenderingHints;
-import java.awt.geom.GeneralPath;
-
-import org.ajax4jsf.resource.ResourceContext;
-
-public class ScrollableGridIconSortDesc extends ScrollableGridIconBasic {
-
- public Dimension calculateDimensions() {
- return new Dimension(13, 4);
- }
-
- protected void paint(ResourceContext context, Graphics2D g2d) {
- g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
- g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
- GeneralPath path = new GeneralPath();
-
- path.moveTo(1,0);
- path.lineTo(4,4);
- path.lineTo(8,0);
- path.closePath();
- Object [] data = (Object[]) restoreData(context);
- Color col = (Color)data[0];
-
- g2d.setColor(col);
- g2d.fill(path);
- }
-}
Deleted: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSplit.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSplit.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/iconimages/ScrollableGridIconSplit.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,31 +0,0 @@
-package org.richfaces.renderkit.html.iconimages;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics2D;
-import java.awt.RenderingHints;
-
-import org.ajax4jsf.resource.ResourceContext;
-
-public class ScrollableGridIconSplit extends ScrollableGridIconBasic {
-
- public Dimension calculateDimensions() {
- return new Dimension(2, 13);
- }
-
- protected void paint(ResourceContext context, Graphics2D g2d) {
- g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
- g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
-
- Object [] data = (Object[]) restoreData(context);
- Color col1 = (Color)data[0];
- Color col2 = (Color)data[1];
-
- g2d.setColor(col2);
- g2d.drawLine(0, 0, 0, 12);
- g2d.setColor(col1);
- g2d.drawLine(1, 0, 1, 12);
- }
-
-}
Modified: trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js
===================================================================
--- trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js 2007-08-16 16:08:29 UTC (rev 2299)
@@ -721,7 +721,7 @@
tbl = this.templNormal.getElement().rows[row].cells;
}
- var cell = document.getElementsByClassName("dr-sgrid-bcbody", tbl[index]);
+ var cell = document.getElementsByClassName("dr-sdt-bcbody", tbl[index]);
return (cell && cell.length && cell.length>0) ? cell[0].innerHTML : "";
},
ensureVisible: function (index) {
Modified: trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js
===================================================================
--- trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js 2007-08-16 16:08:29 UTC (rev 2299)
@@ -16,7 +16,7 @@
CLASSDEF: {
name: 'ClientUI.controls.grid.GridHeader',
parent: ClientUI.common.box.Box,
- sepStyleClass: "dr-sgrid-hsep"
+ sepStyleClass: "dr-sdt-hsep"
}
});
@@ -397,7 +397,7 @@
},
OnCellMouseDown: function(event) {
var el = Event.element(event);
- while(el && !Element.hasClassName(el, "dr-sgrid-hc")) {
+ while(el && !Element.hasClassName(el, "dr-sdt-hc")) {
el = el.parentNode;
}
Modified: trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/Selection.js
===================================================================
--- trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/Selection.js 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/Selection.js 2007-08-16 16:08:29 UTC (rev 2299)
@@ -269,10 +269,10 @@
while(j <= this.selection.ranges[i].indexes[1]) {
var fElement = $(this.prefix + ":f:" + j);
var nElement = $(this.prefix + ":n:" + j);
- Element.addClassName(fElement, "dr-sgrid-row-selected");
- Element.addClassName(nElement, "dr-sgrid-row-selected");
- Element.addClassName(fElement, "rich-sgrid-row-selected");
- Element.addClassName(nElement, "rich-sgrid-row-selected");
+ Element.addClassName(fElement, "dr-sdt-row-selected");
+ Element.addClassName(nElement, "dr-sdt-row-selected");
+ Element.addClassName(fElement, "rich-sdt-row-selected");
+ Element.addClassName(nElement, "rich-sdt-row-selected");
Element.addClassName(fElement, this.selectedClass);
Element.addClassName(nElement, this.selectedClass);
j++;
@@ -482,10 +482,10 @@
this.selection.addId(rowIndex);
var fElement = $(this.prefix + ":f:" + rowIndex);
var nElement = $(this.prefix + ":n:" + rowIndex);
- Element.addClassName(fElement, "dr-sgrid-row-selected");
- Element.addClassName(nElement, "dr-sgrid-row-selected");
- Element.addClassName(fElement, "rich-sgrid-row-selected");
- Element.addClassName(nElement, "rich-sgrid-row-selected");
+ Element.addClassName(fElement, "dr-sdt-row-selected");
+ Element.addClassName(nElement, "dr-sdt-row-selected");
+ Element.addClassName(fElement, "rich-sdt-row-selected");
+ Element.addClassName(nElement, "rich-sdt-row-selected");
Element.addClassName(fElement, this.selectedClass);
Element.addClassName(nElement, this.selectedClass);
},
@@ -494,10 +494,10 @@
this.selection.removeId(rowIndex);
var fElement = $(this.prefix + ":f:" + rowIndex);
var nElement = $(this.prefix + ":n:" + rowIndex);
- Element.removeClassName(fElement, "dr-sgrid-row-selected");
- Element.removeClassName(nElement, "dr-sgrid-row-selected");
- Element.removeClassName(fElement, "rich-sgrid-row-selected");
- Element.removeClassName(nElement, "rich-sgrid-row-selected");
+ Element.removeClassName(fElement, "dr-sdt-row-selected");
+ Element.removeClassName(nElement, "dr-sdt-row-selected");
+ Element.removeClassName(fElement, "rich-sdt-row-selected");
+ Element.removeClassName(nElement, "rich-sdt-row-selected");
Element.removeClassName(fElement, this.selectedClass);
Element.removeClassName(nElement, this.selectedClass);
},
@@ -507,19 +507,19 @@
if(this.activeRow != null) {
fElement = $(this.prefix + ":f:" + this.activeRow);
nElement = $(this.prefix + ":n:" + this.activeRow);
- Element.removeClassName(fElement, "dr-sgrid-row-active");
- Element.removeClassName(nElement, "dr-sgrid-row-active");
- Element.removeClassName(fElement, "rich-sgrid-row-active");
- Element.removeClassName(nElement, "rich-sgrid-row-active");
+ Element.removeClassName(fElement, "dr-sdt-row-active");
+ Element.removeClassName(nElement, "dr-sdt-row-active");
+ Element.removeClassName(fElement, "rich-sdt-row-active");
+ Element.removeClassName(nElement, "rich-sdt-row-active");
Element.removeClassName(fElement, this.activeClass);
Element.removeClassName(nElement, this.activeClass);
}
fElement = $(this.prefix + ":f:" + rowIndex);
nElement = $(this.prefix + ":n:" + rowIndex);
- Element.addClassName(fElement, "dr-sgrid-row-active");
- Element.addClassName(nElement, "dr-sgrid-row-active");
- Element.addClassName(fElement, "rich-sgrid-row-active");
- Element.addClassName(nElement, "rich-sgrid-row-active");
+ Element.addClassName(fElement, "dr-sdt-row-active");
+ Element.addClassName(nElement, "dr-sdt-row-active");
+ Element.addClassName(fElement, "rich-sdt-row-active");
+ Element.addClassName(nElement, "rich-sdt-row-active");
Element.addClassName(fElement, this.activeClass);
Element.addClassName(nElement, this.activeClass);
this.activeRow = rowIndex;
Deleted: trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss
===================================================================
--- trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,325 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<f:template
- xmlns:f="http://jsf.exadel.com/template"
- xmlns:u="http://jsf.exadel.com/template/util"
- xmlns="http://www.w3.org/1999/xhtml">
-
- <f:verbatim>
-
- .dr-sgrid-sort-asc, .dr-sgrid-sort-desc {
- width: 16px;
- height: 6px;
- background-position: 50% 50%;
- background-repeat: no-repeat;
- }
-
- .dr-sgrid-sort-icon {
- position:absolute;
- visibility: hidden;
- }
-
- .dr-sgrid {
- padding: 0px 0px;
- margin: 0px;
- z-index:0;
- border-style: solid;
- }
-
- /**
- * ---------------------------------------------
- * Grid Header declaration
- * ---------------------------------------------
- */
-
- /**
- * Header row
- */
- .dr-sgrid-hr {
- z-index:2;
- }
-
- /**
- * Header cell
- */
- .dr-sgrid-hc {
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
- overflow: hidden;
- font-weight: normal;
- cursor: default;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- -moz-user-focus: normal;
- padding: 0px 0px;
- white-space: nowrap;
- border-bottom-style: solid;
- border-right-style: solid;
- }
-
- .dr-sgrid-hc .sort-asc, .dr-sgrid-hc .sort-desc {
- background-position: right;
- background-repeat: no-repeat;
- width: 16px !important;;
- position: absolute;
- }
-
-
- /**
- * Header cells separator
- */
- .dr-sgrid-hsep {
- /* background-image: url(grid-split.gif);*/
- background-position: center;
- background-repeat: repeat-y;
- cursor: e-resize;
- font-size: 1px;
- top: 15%;
- width: 6px;
- height: 70%;
- overflow: hidden;
- position: absolute;
- display: block;
- white-space: nowrap;
- z-index: 60;
- }
- .dr-sgrid-hsplit {
- width:1px;
- border-right: 1px dashed;
- cursor: col-resize;
- z-index: 100;
- }
-
- /**
- * Header cell body
- */
- .dr-sgrid-hcbody {
- cursor: default;
- padding: 3px 5px;
- white-space: nowrap;
- position: relative;
- display: block;
- overflow: hidden;
- width: 100%;
- font-weight: normal;
- }
-
- .dr-sgrid-fb{
- z-index: 50;
- }
- .dr-sgrid-nb {
- z-index: 20;
- }
-
- /**
- * ---------------------------------------------
- * Grid Footer declaration
- * ---------------------------------------------
- */
-
- /**
- * Footer row
- */
- .dr-sgrid-fr {
- font-weight: normal;
- height: 22px;
- border-top: 1px solid #cbc7b8; /* //TODO Which skin parameter must be here? */
- }
-
- /**
- * Footer cell
- */
- .dr-sgrid-fc {
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
- overflow: hidden;
- font-weight: normal;
- cursor: default;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- -moz-user-focus: normal;
- border-right: 1px solid;
- height:21px !important;
- padding: 0px 0px;
- white-space: nowrap;
- }
-
- /**
- * Footer cell body
- */
- .dr-sgrid-fcbody {
- cursor: default;
- font-weight: normal;
- padding: 3px 5px;
- white-space: nowrap;
- position: relative;
- display: block;
- overflow: hidden;
- }
-
- .dr-sgrid-fcbody1{
- cursor: default;
- font-weight: normal;
- padding: 0px 0px;
- white-space: nowrap;
- position: relative;
- display: block;
- overflow: hidden;
- width: 100%;
- }
-
- /**
- * ---------------------------------------------
- * Body styles
- * ---------------------------------------------
- */
-
- /**
- * Body cell declaration
- * dr-sgrid-bc - reqired
- * dr-sgrid-bcDef - default, used if no custom styles defined in body template
- */
- .dr-sgrid-bc {
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- -moz-user-focus: normal;
- cursor: default;
- border-right: 1px solid;
- border-bottom: 1px solid;
- }
-
- /**
- * Body row style
- */
- .dr-sgrid-ho {
- position: absolute;
- height: 10px;
- width: 10px;
- }
-
- .dr-sgrid-rb {
- font-weight: normal;
- white-space: nowrap;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- }
-
- .dr-sgrid-row-active {
- background-color: #C6D6EA; /* //TODO Which skin parameter must be here? */
- }
-
- .dr-sgrid-bcbody {
- cursor: default;
- font-weight: normal;
- white-space: nowrap;
- padding: 0px 0px;
- position: relative;
- display: block;
- overflow: hidden;
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- width: 100%;
- height: 20px;
- }
-
- /**
- * Helper classes for grid template
- */
- .dr-sgrid-substrate {
- z-index: 48;
- filter:Alpha(opacity=0);
- position:absolute;
- top:0px;
- left:0px;
- display:block;
- }
-
- .dr-sgrid-tmplbox {
- display: block;
- float:left;
- }
-
- .dr-sgrid-inlinebox {
- position: relative;
- display: block;
- overflow: hidden;
- }
- </f:verbatim>
-
- <u:selector name=".dr-sgrid">
- <u:style name="background-color" skin="tableBackgroundColor" />
- <u:style name="border-color" skin="tableBorderColor" />
- <u:style name="border-width" skin="tableBorderWidth" />
- </u:selector>
- <u:selector name=".dr-sgrid-hr">
- <u:style name="background-color" skin="headerBackgroundColor" />
- </u:selector>
- <u:selector name=".dr-sgrid-hc">
- <u:style name="color" skin="headerTextColor" />
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- <u:style name="border-bottom-width" skin="tableBorderWidth" />
- <u:style name="border-bottom-color" skin="tableBorderColor" />
- <u:style name="border-right-width" skin="tableBorderWidth" />
- <u:style name="border-right-color" skin="tableBorderColor" />
- </u:selector>
- <u:selector name=".dr-sgrid-hsplit">
- <u:style name="border-right-color" skin="tipBorderColor" />
- </u:selector>
- <u:selector name=".dr-sgrid-hcbody">
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- </u:selector>
- <u:selector name=".dr-sgrid-fr">
- <u:style name="background-color" skin="tableSubfooterBackgroundColor" />
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- </u:selector>
- <u:selector name=".dr-sgrid-fc">
- <u:style name="border-right-color" skin="tableBorderColor" />
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- </u:selector>
- <u:selector name=".dr-sgrid-fcbody">
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- </u:selector>
- <u:selector name=".dr-sgrid-fcbody1">
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- </u:selector>
- <u:selector name=".dr-sgrid-bc">
- <u:style name="border-right-color" skin="tableBorderColor" />
- <u:style name="border-bottom-color" skin="tableBorderColor" />
- </u:selector>
- <u:selector name=".dr-sgrid-rb">
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- </u:selector>
- <u:selector name=".dr-sgrid-row-selected">
- <u:style name="background-color" skin="additionalBackgroundColor" />
- </u:selector>
- <u:selector name=".dr-sgrid-bcbody">
- <u:style name="font-family" skin="generalFamilyFont" />
- <u:style name="font-size" skin="generalSizeFont" />
- </u:selector>
- <u:selector name=".dr-sgrid-sort-asc">
- <u:style name="background-image">
- <f:resource f:key="org.richfaces.renderkit.html.iconimages.ScrollableGridIconSortAsc"/>
- </u:style>
- </u:selector>
- <u:selector name=".dr-sgrid-sort-desc">
- <u:style name="background-image">
- <f:resource f:key="org.richfaces.renderkit.html.iconimages.ScrollableGridIconSortDesc"/>
- </u:style>
- </u:selector>
- <u:selector name=".dr-sgrid-hsep">
- <u:style name="background-image">
- <f:resource f:key="org.richfaces.renderkit.html.iconimages.ScrollableGridIconSplit"/>
- </u:style>
- </u:selector>
-</f:template>
Added: trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/scrollable-data-table.xcss
===================================================================
--- trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/scrollable-data-table.xcss (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/resources/org/richfaces/renderkit/html/css/scrollable-data-table.xcss 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:template
+ xmlns:f="http://jsf.exadel.com/template"
+ xmlns:u="http://jsf.exadel.com/template/util"
+ xmlns="http://www.w3.org/1999/xhtml">
+
+ <f:verbatim>
+
+ .dr-sdt-sort-asc, .dr-sdt-sort-desc {
+ width: 16px;
+ height: 6px;
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ }
+
+ .dr-sdt-sort-icon {
+ position:absolute;
+ visibility: hidden;
+ }
+
+ .dr-sdt {
+ padding: 0px 0px;
+ margin: 0px;
+ z-index:0;
+ border-style: solid;
+ }
+
+ /**
+ * ---------------------------------------------
+ * Grid Header declaration
+ * ---------------------------------------------
+ */
+
+ /**
+ * Header row
+ */
+ .dr-sdt-hr {
+ z-index:2;
+ }
+
+ /**
+ * Header cell
+ */
+ .dr-sdt-hc {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ font-weight: normal;
+ cursor: default;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+ padding: 0px 0px;
+ white-space: nowrap;
+ border-bottom-style: solid;
+ border-right-style: solid;
+ }
+
+ .dr-sdt-hc .sort-asc, .dr-sdt-hc .sort-desc {
+ background-position: right;
+ background-repeat: no-repeat;
+ width: 16px !important;;
+ position: absolute;
+ }
+
+
+ /**
+ * Header cells separator
+ */
+ .dr-sdt-hsep {
+ /* background-image: url(grid-split.gif);*/
+ background-position: center;
+ background-repeat: repeat-y;
+ cursor: e-resize;
+ font-size: 1px;
+ top: 15%;
+ width: 6px;
+ height: 70%;
+ overflow: hidden;
+ position: absolute;
+ display: block;
+ white-space: nowrap;
+ z-index: 60;
+ }
+ .dr-sdt-hsplit {
+ width:1px;
+ border-right: 1px dashed;
+ cursor: col-resize;
+ z-index: 100;
+ }
+
+ /**
+ * Header cell body
+ */
+ .dr-sdt-hcbody {
+ cursor: default;
+ padding: 3px 5px;
+ white-space: nowrap;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ width: 100%;
+ font-weight: normal;
+ }
+
+ .dr-sdt-fb{
+ z-index: 50;
+ }
+ .dr-sdt-nb {
+ z-index: 20;
+ }
+
+ /**
+ * ---------------------------------------------
+ * Grid Footer declaration
+ * ---------------------------------------------
+ */
+
+ /**
+ * Footer row
+ */
+ .dr-sdt-fr {
+ font-weight: normal;
+ height: 22px;
+ border-top: 1px solid #cbc7b8; /* //TODO Which skin parameter must be here? */
+ }
+
+ /**
+ * Footer cell
+ */
+ .dr-sdt-fc {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ font-weight: normal;
+ cursor: default;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+ border-right: 1px solid;
+ height:21px !important;
+ padding: 0px 0px;
+ white-space: nowrap;
+ }
+
+ /**
+ * Footer cell body
+ */
+ .dr-sdt-fcbody {
+ cursor: default;
+ font-weight: normal;
+ padding: 3px 5px;
+ white-space: nowrap;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ }
+
+ .dr-sdt-fcbody1{
+ cursor: default;
+ font-weight: normal;
+ padding: 0px 0px;
+ white-space: nowrap;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ width: 100%;
+ }
+
+ /**
+ * ---------------------------------------------
+ * Body styles
+ * ---------------------------------------------
+ */
+
+ /**
+ * Body cell declaration
+ * dr-sdt-bc - reqired
+ * dr-sdt-bcDef - default, used if no custom styles defined in body template
+ */
+ .dr-sdt-bc {
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+ cursor: default;
+ border-right: 1px solid;
+ border-bottom: 1px solid;
+ }
+
+ /**
+ * Body row style
+ */
+ .dr-sdt-ho {
+ position: absolute;
+ height: 10px;
+ width: 10px;
+ }
+
+ .dr-sdt-rb {
+ font-weight: normal;
+ white-space: nowrap;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ }
+
+ .dr-sdt-row-active {
+ background-color: #C6D6EA; /* //TODO Which skin parameter must be here? */
+ }
+
+ .dr-sdt-bcbody {
+ cursor: default;
+ font-weight: normal;
+ white-space: nowrap;
+ padding: 0px 0px;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ width: 100%;
+ height: 20px;
+ }
+
+ /**
+ * Helper classes for grid template
+ */
+ .dr-sdt-substrate {
+ z-index: 48;
+ filter:Alpha(opacity=0);
+ position:absolute;
+ top:0px;
+ left:0px;
+ display:block;
+ }
+
+ .dr-sdt-tmplbox {
+ display: block;
+ float:left;
+ }
+
+ .dr-sdt-inlinebox {
+ position: relative;
+ display: block;
+ overflow: hidden;
+ }
+ </f:verbatim>
+
+ <u:selector name=".dr-sdt">
+ <u:style name="background-color" skin="tableBackgroundColor" />
+ <u:style name="border-color" skin="tableBorderColor" />
+ <u:style name="border-width" skin="tableBorderWidth" />
+ </u:selector>
+ <u:selector name=".dr-sdt-hr">
+ <u:style name="background-color" skin="headerBackgroundColor" />
+ </u:selector>
+ <u:selector name=".dr-sdt-hc">
+ <u:style name="color" skin="headerTextColor" />
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ <u:style name="border-bottom-width" skin="tableBorderWidth" />
+ <u:style name="border-bottom-color" skin="tableBorderColor" />
+ <u:style name="border-right-width" skin="tableBorderWidth" />
+ <u:style name="border-right-color" skin="tableBorderColor" />
+ </u:selector>
+ <u:selector name=".dr-sdt-hsplit">
+ <u:style name="border-right-color" skin="tipBorderColor" />
+ </u:selector>
+ <u:selector name=".dr-sdt-hcbody">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sdt-fr">
+ <u:style name="background-color" skin="tableSubfooterBackgroundColor" />
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sdt-fc">
+ <u:style name="border-right-color" skin="tableBorderColor" />
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sdt-fcbody">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sdt-fcbody1">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sdt-bc">
+ <u:style name="border-right-color" skin="tableBorderColor" />
+ <u:style name="border-bottom-color" skin="tableBorderColor" />
+ </u:selector>
+ <u:selector name=".dr-sdt-rb">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sdt-row-selected">
+ <u:style name="background-color" skin="additionalBackgroundColor" />
+ </u:selector>
+ <u:selector name=".dr-sdt-bcbody">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sdt-sort-asc">
+ <u:style name="background-image">
+ <f:resource f:key="org.richfaces.renderkit.html.iconimages.ScrollableDataTableIconSortAsc"/>
+ </u:style>
+ </u:selector>
+ <u:selector name=".dr-sdt-sort-desc">
+ <u:style name="background-image">
+ <f:resource f:key="org.richfaces.renderkit.html.iconimages.ScrollableDataTableIconSortDesc"/>
+ </u:style>
+ </u:selector>
+ <u:selector name=".dr-sdt-hsep">
+ <u:style name="background-image">
+ <f:resource f:key="org.richfaces.renderkit.html.iconimages.ScrollableDataTableIconSplit"/>
+ </u:style>
+ </u:selector>
+</f:template>
Added: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-cell.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-cell.jspx (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-cell.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:root
+ xmlns:f="http://ajax4jsf.org/cdk/template"
+ xmlns:c=" http://java.sun.com/jsf/core"
+ xmlns:ui=" http://ajax4jsf.org/cdk/ui"
+ xmlns:u=" http://ajax4jsf.org/cdk/u"
+ xmlns:x=" http://ajax4jsf.org/cdk/x"
+ xmlns:h=" http://ajax4jsf.org/cdk/headers"
+ xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
+ class="org.richfaces.renderkit.html.ScrollableDataTableCellRenderer"
+ component="javax.faces.component.UIComponent"
+ >
+
+ <td class="dr-sdt-bc rich-sdt-column-cell #{component.attributes['styleClass']}" id="#{client_id}:c_#{cell_id}">
+ <div id="#{client_id}:bc_#{cell_id}" class="dr-sdt-bcbody #{component.attributes['cellClass']}" style="#{component.attributes['cellStyle']}">
+ <vcp:body/>
+ </div>
+ </td>
+
+</f:root>
\ No newline at end of file
Added: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-footer-cell.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-footer-cell.jspx (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-footer-cell.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:root
+ xmlns:f="http://ajax4jsf.org/cdk/template"
+ xmlns:c=" http://java.sun.com/jsf/core"
+ xmlns:ui=" http://ajax4jsf.org/cdk/ui"
+ xmlns:u=" http://ajax4jsf.org/cdk/u"
+ xmlns:x=" http://ajax4jsf.org/cdk/x"
+ xmlns:h=" http://ajax4jsf.org/cdk/headers"
+ xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
+ class="org.richfaces.renderkit.html.ScrollableDataTableFooterCellRenderer"
+ component="javax.faces.component.UIComponent"
+ >
+
+ <th class="dr-sdt-fc rich-sdt-footer-cell #{component.attributes['footerClass']}">
+ <span id="#{client_id}:fc_#{cell_index}" class="dr-sdt-fcbody1">
+ <span class="dr-sdt-fcbody">
+ <vcp:body/>
+ </span>
+ </span>
+ </th>
+
+</f:root>
\ No newline at end of file
Added: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-cell.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-cell.jspx (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-cell.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:root
+ xmlns:f="http://ajax4jsf.org/cdk/template"
+ xmlns:c=" http://java.sun.com/jsf/core"
+ xmlns:ui=" http://ajax4jsf.org/cdk/ui"
+ xmlns:u=" http://ajax4jsf.org/cdk/u"
+ xmlns:x=" http://ajax4jsf.org/cdk/x"
+ xmlns:h=" http://ajax4jsf.org/cdk/headers"
+ xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
+
+ class="org.richfaces.renderkit.html.ScrollableDataTableHeaderCellRenderer"
+ component="javax.faces.component.UIComponent"
+ >
+
+ <th class="dr-sdt-hc rich-sdt-header-cell" id="#{client_id}:hc_#{cell_index}" columnIndex="#{cell_index}" sortable="#{component.attributes['sortable']}">
+
+ <vcp:body/>
+
+ <jsp:scriptlet>
+
+ int offset = ((Integer)variables.getVariable("sepOffset")).intValue() - 3;
+
+ </jsp:scriptlet>
+ <span column="#{cell_index}" id="#{client_id}:hsep_#{cell_index}" style="left: #{offset}px;" class="dr-sdt-hsep rich-sdt-hsep" />
+ </th>
+
+</f:root>
\ No newline at end of file
Added: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-itself.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-itself.jspx (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table-header-itself.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:root
+ xmlns:f="http://ajax4jsf.org/cdk/template"
+ xmlns:c=" http://java.sun.com/jsf/core"
+ xmlns:ui=" http://ajax4jsf.org/cdk/ui"
+ xmlns:u=" http://ajax4jsf.org/cdk/u"
+ xmlns:x=" http://ajax4jsf.org/cdk/x"
+ xmlns:h=" http://ajax4jsf.org/cdk/headers"
+ xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
+ baseclass="org.richfaces.renderkit.html.SortIconRenderer"
+ class="org.richfaces.renderkit.html.ScrollableDataTableHeaderItselfRenderer"
+ component="javax.faces.component.UIComponent"
+ >
+
+<div id="#{client_id}:hcb_#{cell_index}" class="dr-sdt-hcbody #{component.attributes['headerClass']}">
+ <vcp:body/>
+
+ <div align="right" id="#{client_id}:hs_#{cell_index}" class="dr-sdt-sort-icon">
+ <c:if test="#{sortAscending}">
+ <f:call name="renderAscIcon"/>
+ </c:if>
+ <c:if test="#{sortDescending}">
+ <f:call name="renderDescIcon"/>
+ </c:if>
+ </div>
+
+</div>
+<ajax:update>#{client_id}:hcb_#{cell_index}</ajax:update>
+
+</f:root>
\ No newline at end of file
Added: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx (rev 0)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:root
+ xmlns:f="http://ajax4jsf.org/cdk/template"
+ xmlns:c=" http://java.sun.com/jsf/core"
+ xmlns:ui=" http://ajax4jsf.org/cdk/ui"
+ xmlns:u=" http://ajax4jsf.org/cdk/u"
+ xmlns:x=" http://ajax4jsf.org/cdk/x"
+ xmlns:h=" http://ajax4jsf.org/cdk/headers"
+ xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
+ class="org.richfaces.renderkit.html.ScrollableDataTableRenderer"
+ baseclass="org.richfaces.renderkit.html.ScrollableDataTableBaseRenderer"
+ component="org.richfaces.component.UIScrollableDataTable"
+ >
+ <jsp:directive.page import="javax.faces.component.UIComponent,javax.faces.component.UIColumn, java.util.List, java.util.Iterator, org.richfaces.component.Column"/>
+ <h:styles>
+ /org/richfaces/renderkit/html/css/scrollable-data-table.xcss
+ </h:styles>
+
+ <h:scripts>
+ new org.ajax4jsf.javascript.PrototypeScript(),
+ new org.ajax4jsf.javascript.AjaxScript(),
+ /org/richfaces/renderkit/html/scripts/extend/extend.js,
+ /org/richfaces/renderkit/html/scripts/scrollable-data-table.js
+ </h:scripts>
+
+ <f:clientId var="clientId" />
+
+ <f:call name="setUpColumnsWidth"/>
+
+ <jsp:scriptlet>
+ <![CDATA[
+ List children = component.getChildren();
+ String hStyle, fStyle;
+ boolean footer = false;
+ boolean header = false;
+
+ for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ UIComponent column = (UIComponent) iterator.next();
+ if(column instanceof UIColumn){
+ UIComponent hFacet = ((UIColumn) column).getHeader();
+ UIComponent fFacet = ((UIColumn) column).getFooter();
+ if(hFacet != null){
+ if(!header)
+ header = true;
+ }
+ if(fFacet != null){
+ if(!footer)
+ footer = true;
+ }
+ }
+ }
+
+ if(header){
+ hStyle = "";
+ }else{
+ hStyle = "display: none";
+ }
+ if(footer){
+ fStyle = "";
+ }else{;
+ fStyle = "display: none";
+ }
+
+ variables.setVariable("fStyle", fStyle);
+ variables.setVariable("hStyle", hStyle);
+ ]]>
+ </jsp:scriptlet>
+
+
+ <div id="#{clientId}" style="width: #{component.attributes['width']};height: #{component.attributes['height']};" class="dr-sdt #{component.attributes['styleClass']}" >
+ <div id="#{clientId}:cs" class="dr-sdt-hsplit" />
+ <div id="#{clientId}_GridHeaderTemplate" class="dr-sdt-inlinebox" style="#{hStyle}; width: #{component.attributes['width']};">
+ <iframe id="#{clientId}:hs" class="dr-sdt-substrate" src="" scrolling="no" frameborder="0" > <br/> </iframe>
+ <div style="display: block; left: 0px; top: 0px; width: #{sumWidth}px;">
+ <span class="dr-sdt-tmplbox dr-sdt-fb" id="#{clientId}:header:FrozenBox">
+ <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
+
+ <jsp:scriptlet>
+ <![CDATA[
+ renderCols(context, component, true);
+ ]]>
+ </jsp:scriptlet>
+
+ <thead>
+ <tr class="dr-sdt-hr #{component.attributes['headerClass']}">
+ <jsp:scriptlet>
+ <![CDATA[
+ renderHeaders(context, component, true);
+ ]]>
+ </jsp:scriptlet>
+ </tr>
+ </thead>
+ </table>
+ </span>
+
+ <span class="dr-sdt-tmplbox dr-sdt-nb" id="#{clientId}:header:NormalBox">
+ <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
+
+ <jsp:scriptlet>
+ <![CDATA[
+ renderCols(context, component, false);
+ ]]>
+ </jsp:scriptlet>
+ <col width="1"/>
+ <thead>
+ <tr class="dr-sdt-hr #{component.attributes['headerClass']}">
+ <jsp:scriptlet>
+ <![CDATA[
+ renderHeaders(context, component, false);
+ ]]>
+ </jsp:scriptlet>
+ <th></th>
+ </tr>
+ </thead>
+ </table>
+ </span>
+ </div>
+ </div>
+
+
+
+ <div id="#{clientId}_GridBodyTemplate" class="dr-sdt-inlinebox" style="overflow: auto; width: #{component.attributes['width']}; height: #{component.attributes['height']};">
+ <div id="#{clientId}:scb" style="position: absolute; z-index: 0;">
+ <div id="#{clientId}:sb" style="position: absolute;" ><br/> </div>
+ </div>
+ <div id="#{clientId}:bc" style="display: block; width: #{sumWidth}px;">
+ <span class="dr-sdt-tmplbox dr-sdt-fb" id="#{clientId}:body:FrozenBox">
+ <table id="#{clientId}:f" cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
+
+ <jsp:scriptlet>
+ <![CDATA[
+ renderCols(context, component, true);
+ ]]>
+ </jsp:scriptlet>
+ <tbody>
+ <jsp:scriptlet>
+ <![CDATA[
+ renderGridBody(context, component, true);
+ ]]>
+ </jsp:scriptlet>
+ </tbody>
+ </table>
+ <span class="dr-sdt-ho" id="#{clientId}:fho" ><br/></span>
+ </span>
+ <span class="dr-sdt-tmplbox dr-sdt-nb" id="#{clientId}:body:NormalBox">
+ <table id="#{clientId}:n" cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
+
+ <jsp:scriptlet>
+ <![CDATA[
+ renderCols(context, component, false);
+ ]]>
+ </jsp:scriptlet>
+ <col width="1"/>
+ <tbody>
+ <jsp:scriptlet>
+ <![CDATA[
+ renderGridBody(context, component, false);
+ ]]>
+ </jsp:scriptlet>
+ </tbody>
+ </table>
+ <span class="dr-sdt-ho" id="#{clientId}:nho" ><br/></span>
+ </span>
+ </div>
+ </div>
+
+ <div id="#{clientId}_GridFooterTemplate" class="dr-sdt-inlinebox" style="#{fStyle}; width: #{component.attributes['width']};">
+ <iframe id="#{clientId}:fs" class="dr-sdt-substrate" src="" scrolling="no" frameborder="0" > <br/></iframe>
+ <div style="display: block; width: width: #{sumWidth}px;">
+ <span class="dr-sdt-tmplbox dr-sdt-fb" id="#{clientId}:footer:FrozenBox">
+ <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
+
+ <jsp:scriptlet>
+ <![CDATA[
+ renderCols(context, component, true);
+ ]]>
+ </jsp:scriptlet>
+ <tfoot>
+ <tr class="dr-sdt-fr #{component.attributes['footerClass']}">
+ <jsp:scriptlet>
+ <![CDATA[
+ renderFooters(context, component,true);
+ ]]>
+ </jsp:scriptlet>
+ </tr>
+ </tfoot>
+ </table>
+ </span>
+
+ <span class="dr-sdt-tmplbox dr-sdt-nb" id="#{clientId}:footer:NormalBox">
+ <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
+
+ <jsp:scriptlet>
+ <![CDATA[
+ renderCols(context, component, false);
+ ]]>
+ </jsp:scriptlet>
+ <col width="1"/>
+ <tfoot>
+ <tr class="dr-sdt-fr #{component.attributes['footerClass']}">
+ <jsp:scriptlet>
+ <![CDATA[
+ renderFooters(context, component,false);
+ ]]>
+ </jsp:scriptlet>
+ <th></th>
+ </tr>
+ </tfoot>
+ </table>
+ </span>
+ </div>
+ </div>
+
+ <input type="hidden" name="#{clientId}_hc" id="#{clientId}_hc"/>
+ <input type="hidden" name="#{clientId}_state_input" id="#{clientId}_state_input"/>
+ <input type="hidden" name="#{clientId}_options_input" id="#{clientId}_options_input"/>
+ <input type="hidden" name="#{clienId}_rows_input" id="#{clientId}_rows_input" value="#{rows_count}"/>
+ <input type="button" name="#{clientId}_submit_input" id="#{clientId}_submit_input" onclick="#{this:getRowsAjaxUpdate(context,component)}" style="display:none"/>
+ <jsp:scriptlet>
+ <![CDATA[
+ renderHiddenScrollInput(context, component);
+ ]]>
+ </jsp:scriptlet>
+
+ <f:call name="contributorsEncodeHere"/>
+
+ </div>
+ <script id="#{clientId}_grid_create_scripts" type="text/javascript">
+ //<![CDATA[
+
+ #{this:getJavaScriptVarName(context, component)} = #{this:createClientScrollableGrid(context, component)};
+ #{this:getScriptContributions(context, component)};
+
+// ]]>
+ </script>
+ <f:call name="tearDownState"/>
+</f:root>
+
+
+
\ No newline at end of file
Deleted: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-cell.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-cell.jspx 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-cell.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<f:root
- xmlns:f="http://ajax4jsf.org/cdk/template"
- xmlns:c=" http://java.sun.com/jsf/core"
- xmlns:ui=" http://ajax4jsf.org/cdk/ui"
- xmlns:u=" http://ajax4jsf.org/cdk/u"
- xmlns:x=" http://ajax4jsf.org/cdk/x"
- xmlns:h=" http://ajax4jsf.org/cdk/headers"
- xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
- class="org.richfaces.renderkit.html.ScrollableGridCellRenderer"
- component="javax.faces.component.UIComponent"
- >
-
- <td class="dr-sgrid-bc rich-sgrid-column-cell #{component.attributes['styleClass']}" id="#{client_id}:c_#{cell_id}">
- <div id="#{client_id}:bc_#{cell_id}" class="dr-sgrid-bcbody #{component.attributes['cellClass']}" style="#{component.attributes['cellStyle']}">
- <vcp:body/>
- </div>
- </td>
-
-</f:root>
\ No newline at end of file
Deleted: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<f:root
- xmlns:f="http://ajax4jsf.org/cdk/template"
- xmlns:c=" http://java.sun.com/jsf/core"
- xmlns:ui=" http://ajax4jsf.org/cdk/ui"
- xmlns:u=" http://ajax4jsf.org/cdk/u"
- xmlns:x=" http://ajax4jsf.org/cdk/x"
- xmlns:h=" http://ajax4jsf.org/cdk/headers"
- xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
- class="org.richfaces.renderkit.html.ScrollableGridFooterCellRenderer"
- component="javax.faces.component.UIComponent"
- >
-
- <th class="dr-sgrid-fc rich-sgrid-footer-cell #{component.attributes['footerClass']}">
- <span id="#{client_id}:fc_#{cell_index}" class="dr-sgrid-fcbody1">
- <span class="dr-sgrid-fcbody">
- <vcp:body/>
- </span>
- </span>
- </th>
-
-</f:root>
\ No newline at end of file
Deleted: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<f:root
- xmlns:f="http://ajax4jsf.org/cdk/template"
- xmlns:c=" http://java.sun.com/jsf/core"
- xmlns:ui=" http://ajax4jsf.org/cdk/ui"
- xmlns:u=" http://ajax4jsf.org/cdk/u"
- xmlns:x=" http://ajax4jsf.org/cdk/x"
- xmlns:h=" http://ajax4jsf.org/cdk/headers"
- xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
-
- class="org.richfaces.renderkit.html.ScrollableGridHeaderCellRenderer"
- component="javax.faces.component.UIComponent"
- >
-
- <th class="dr-sgrid-hc rich-sgrid-header-cell" id="#{client_id}:hc_#{cell_index}" columnIndex="#{cell_index}" sortable="#{component.attributes['sortable']}">
-
- <vcp:body/>
-
- <jsp:scriptlet>
-
- int offset = ((Integer)variables.getVariable("sepOffset")).intValue() - 3;
-
- </jsp:scriptlet>
- <span column="#{cell_index}" id="#{client_id}:hsep_#{cell_index}" style="left: #{offset}px;" class="dr-sgrid-hsep rich-sgrid-hsep" />
- </th>
-
-</f:root>
\ No newline at end of file
Deleted: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-itself.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-itself.jspx 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid-header-itself.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<f:root
- xmlns:f="http://ajax4jsf.org/cdk/template"
- xmlns:c=" http://java.sun.com/jsf/core"
- xmlns:ui=" http://ajax4jsf.org/cdk/ui"
- xmlns:u=" http://ajax4jsf.org/cdk/u"
- xmlns:x=" http://ajax4jsf.org/cdk/x"
- xmlns:h=" http://ajax4jsf.org/cdk/headers"
- xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
- baseclass="org.richfaces.renderkit.html.SortIconRenderer"
- class="org.richfaces.renderkit.html.ScrollableGridHeaderItselfRenderer"
- component="javax.faces.component.UIComponent"
- >
-
-<div id="#{client_id}:hcb_#{cell_index}" class="dr-sgrid-hcbody #{component.attributes['headerClass']}">
- <vcp:body/>
-
- <div align="right" id="#{client_id}:hs_#{cell_index}" class="dr-sgrid-sort-icon">
- <c:if test="#{sortAscending}">
- <f:call name="renderAscIcon"/>
- </c:if>
- <c:if test="#{sortDescending}">
- <f:call name="renderDescIcon"/>
- </c:if>
- </div>
-
-</div>
-<ajax:update>#{client_id}:hcb_#{cell_index}</ajax:update>
-
-</f:root>
\ No newline at end of file
Deleted: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid.jspx 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-grid.jspx 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,240 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<f:root
- xmlns:f="http://ajax4jsf.org/cdk/template"
- xmlns:c=" http://java.sun.com/jsf/core"
- xmlns:ui=" http://ajax4jsf.org/cdk/ui"
- xmlns:u=" http://ajax4jsf.org/cdk/u"
- xmlns:x=" http://ajax4jsf.org/cdk/x"
- xmlns:h=" http://ajax4jsf.org/cdk/headers"
- xmlns:vcp="http://ajax4jsf.org/cdk/vcp"
- class="org.richfaces.renderkit.html.ScrollableGridRenderer"
- baseclass="org.richfaces.renderkit.html.ScrollableGridBaseRenderer"
- component="org.richfaces.component.UIScrollableGrid"
- >
- <jsp:directive.page import="javax.faces.component.UIComponent,javax.faces.component.UIColumn, java.util.List, java.util.Iterator, org.richfaces.component.Column"/>
- <h:styles>
- /org/richfaces/renderkit/html/css/grid.xcss
- </h:styles>
-
- <h:scripts>
- new org.ajax4jsf.javascript.PrototypeScript(),
- new org.ajax4jsf.javascript.AjaxScript(),
- /org/richfaces/renderkit/html/scripts/extend/extend.js,
- /org/richfaces/renderkit/html/scripts/scrollable-grid.js
- </h:scripts>
-
- <f:clientId var="clientId" />
-
- <f:call name="setUpColumnsWidth"/>
-
- <jsp:scriptlet>
- <![CDATA[
- List children = component.getChildren();
- String hStyle, fStyle;
- boolean footer = false;
- boolean header = false;
-
- for (Iterator iterator = children.iterator(); iterator.hasNext();) {
- UIComponent column = (UIComponent) iterator.next();
- if(column instanceof UIColumn){
- UIComponent hFacet = ((UIColumn) column).getHeader();
- UIComponent fFacet = ((UIColumn) column).getFooter();
- if(hFacet != null){
- if(!header)
- header = true;
- }
- if(fFacet != null){
- if(!footer)
- footer = true;
- }
- }
- }
-
- if(header){
- hStyle = "";
- }else{
- hStyle = "display: none";
- }
- if(footer){
- fStyle = "";
- }else{;
- fStyle = "display: none";
- }
-
- variables.setVariable("fStyle", fStyle);
- variables.setVariable("hStyle", hStyle);
- ]]>
- </jsp:scriptlet>
-
-
- <div id="#{clientId}" style="width: #{component.attributes['width']};height: #{component.attributes['height']};" class="dr-sgrid #{component.attributes['styleClass']}" >
- <div id="#{clientId}:cs" class="dr-sgrid-hsplit" />
- <div id="#{clientId}_GridHeaderTemplate" class="dr-sgrid-inlinebox" style="#{hStyle}; width: #{component.attributes['width']};">
- <iframe id="#{clientId}:hs" class="dr-sgrid-substrate" src="" scrolling="no" frameborder="0" > <br/> </iframe>
- <div style="display: block; left: 0px; top: 0px; width: #{sumWidth}px;">
- <span class="dr-sgrid-tmplbox dr-sgrid-fb" id="#{clientId}:header:FrozenBox">
- <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
-
- <jsp:scriptlet>
- <![CDATA[
- renderCols(context, component, true);
- ]]>
- </jsp:scriptlet>
-
- <thead>
- <tr class="dr-sgrid-hr #{component.attributes['headerClass']}">
- <jsp:scriptlet>
- <![CDATA[
- renderHeaders(context, component, true);
- ]]>
- </jsp:scriptlet>
- </tr>
- </thead>
- </table>
- </span>
-
- <span class="dr-sgrid-tmplbox dr-sgrid-nb" id="#{clientId}:header:NormalBox">
- <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
-
- <jsp:scriptlet>
- <![CDATA[
- renderCols(context, component, false);
- ]]>
- </jsp:scriptlet>
- <col width="1"/>
- <thead>
- <tr class="dr-sgrid-hr #{component.attributes['headerClass']}">
- <jsp:scriptlet>
- <![CDATA[
- renderHeaders(context, component, false);
- ]]>
- </jsp:scriptlet>
- <th></th>
- </tr>
- </thead>
- </table>
- </span>
- </div>
- </div>
-
-
-
- <div id="#{clientId}_GridBodyTemplate" class="dr-sgrid-inlinebox" style="overflow: auto; width: #{component.attributes['width']}; height: #{component.attributes['height']};">
- <div id="#{clientId}:scb" style="position: absolute; z-index: 0;">
- <div id="#{clientId}:sb" style="position: absolute;" ><br/> </div>
- </div>
- <div id="#{clientId}:bc" style="display: block; width: #{sumWidth}px;">
- <span class="dr-sgrid-tmplbox dr-sgrid-fb" id="#{clientId}:body:FrozenBox">
- <table id="#{clientId}:f" cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
-
- <jsp:scriptlet>
- <![CDATA[
- renderCols(context, component, true);
- ]]>
- </jsp:scriptlet>
- <tbody>
- <jsp:scriptlet>
- <![CDATA[
- renderGridBody(context, component, true);
- ]]>
- </jsp:scriptlet>
- </tbody>
- </table>
- <span class="dr-sgrid-ho" id="#{clientId}:fho" ><br/></span>
- </span>
- <span class="dr-sgrid-tmplbox dr-sgrid-nb" id="#{clientId}:body:NormalBox">
- <table id="#{clientId}:n" cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
-
- <jsp:scriptlet>
- <![CDATA[
- renderCols(context, component, false);
- ]]>
- </jsp:scriptlet>
- <col width="1"/>
- <tbody>
- <jsp:scriptlet>
- <![CDATA[
- renderGridBody(context, component, false);
- ]]>
- </jsp:scriptlet>
- </tbody>
- </table>
- <span class="dr-sgrid-ho" id="#{clientId}:nho" ><br/></span>
- </span>
- </div>
- </div>
-
- <div id="#{clientId}_GridFooterTemplate" class="dr-sgrid-inlinebox" style="#{fStyle}; width: #{component.attributes['width']};">
- <iframe id="#{clientId}:fs" class="dr-sgrid-substrate" src="" scrolling="no" frameborder="0" > <br/></iframe>
- <div style="display: block; width: width: #{sumWidth}px;">
- <span class="dr-sgrid-tmplbox dr-sgrid-fb" id="#{clientId}:footer:FrozenBox">
- <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
-
- <jsp:scriptlet>
- <![CDATA[
- renderCols(context, component, true);
- ]]>
- </jsp:scriptlet>
- <tfoot>
- <tr class="dr-sgrid-fr #{component.attributes['footerClass']}">
- <jsp:scriptlet>
- <![CDATA[
- renderFooters(context, component,true);
- ]]>
- </jsp:scriptlet>
- </tr>
- </tfoot>
- </table>
- </span>
-
- <span class="dr-sgrid-tmplbox dr-sgrid-nb" id="#{clientId}:footer:NormalBox">
- <table cellpadding="0" cellspacing="0" style="border-collapse:collapse; table-layout:fixed">
-
- <jsp:scriptlet>
- <![CDATA[
- renderCols(context, component, false);
- ]]>
- </jsp:scriptlet>
- <col width="1"/>
- <tfoot>
- <tr class="dr-sgrid-fr #{component.attributes['footerClass']}">
- <jsp:scriptlet>
- <![CDATA[
- renderFooters(context, component,false);
- ]]>
- </jsp:scriptlet>
- <th></th>
- </tr>
- </tfoot>
- </table>
- </span>
- </div>
- </div>
-
- <input type="hidden" name="#{clientId}_hc" id="#{clientId}_hc"/>
- <input type="hidden" name="#{clientId}_state_input" id="#{clientId}_state_input"/>
- <input type="hidden" name="#{clientId}_options_input" id="#{clientId}_options_input"/>
- <input type="hidden" name="#{clienId}_rows_input" id="#{clientId}_rows_input" value="#{rows_count}"/>
- <input type="button" name="#{clientId}_submit_input" id="#{clientId}_submit_input" onclick="#{this:getRowsAjaxUpdate(context,component)}" style="display:none"/>
- <jsp:scriptlet>
- <![CDATA[
- renderHiddenScrollInput(context, component);
- ]]>
- </jsp:scriptlet>
-
- <f:call name="contributorsEncodeHere"/>
-
- </div>
- <script id="#{clientId}_grid_create_scripts" type="text/javascript">
- //<![CDATA[
-
- #{this:getJavaScriptVarName(context, component)} = #{this:createClientScrollableGrid(context, component)};
- #{this:getScriptContributions(context, component)};
-
-// ]]>
- </script>
- <f:call name="tearDownState"/>
-</f:root>
-
-
-
\ No newline at end of file
Deleted: trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/HtmlScrollableGridComponentTest.java
===================================================================
--- trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/HtmlScrollableGridComponentTest.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/HtmlScrollableGridComponentTest.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,270 +0,0 @@
-/**
- * GENERATED FILE - DO NOT EDIT
- *
- */
-
-package org.richfaces.component.html;
-
-import java.lang.String ;
-import org.ajax4jsf.tests.AbstractAjax4JsfTestCase ;
-import org.richfaces.model.SortField;
-import org.richfaces.model.SortOrder ;
-import java.lang.Object ;
-import org.richfaces.model.selection.Selection ;
-import org.richfaces.model.selection.SimpleSelection;
-
-import com.gargoylesoftware.htmlunit.Page;
-import javax.faces.component.UIForm;
-import javax.faces.component.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
-import javax.faces.component.UIViewRoot;
-
-import org.ajax4jsf.tests.MockValueBinding;
-
-//import org.richfaces.component.html.HtmlScrollableGrid;
-
-public class HtmlScrollableGridComponentTest extends org.ajax4jsf.tests.AbstractAjax4JsfTestCase {
-
-// public static final String COMPONENT_TYPE = "org.richfaces.component.ScrollableGrid";
-
-
- private boolean _bypassUpdatesSet = false;
- private boolean _limitToListSet = false;
- private boolean _timeoutSet = false;
- private boolean _ajaxSingleSet = false;
- private boolean _frozenColCountSet = false;
- private boolean _requestDelaySet = false;
- private boolean _ignoreDupResponsesSet = false;
-
- private HtmlScrollableGrid component;
- private UIForm form;
-// private FacesContext context;
-
- /**
- * Constructor to init default renderers
- */
- public HtmlScrollableGridComponentTest (String name){
- super(name);
- }
-
- /*
- * setup the tets
- */
- public void setUp() throws Exception {
- super.setUp();
- component = new HtmlScrollableGrid();
- form = new HtmlForm();
- form.setId("form");
- facesContext.getViewRoot().getChildren().add(form);
-
- component.setId("component");
- component.setOnselectionchange("onselectionchange" );
- component.setWidth("width" );
- component.setFocus("focus" );
- component.setBypassUpdates(true );
- component.setLimitToList(true );
- component.setTimeout(20 );
- component.setColumnClasses("columnClasses" );
-// component.setSelection("selection" );
- component.setHeaderClass("headerClass" );
- component.setRowClasses("rowClasses" );
- component.setOncomplete("oncomplete" );
-// component.setSortOrder("sortOrder" );
- component.setFooterClass("footerClass" );
- component.setReRender("reRender" );
- component.setActiveClass("activeClass" );
- component.setStyleClass("styleClass" );
- component.setHeight("height" );
- component.setCaptionClass("captionClass" );
- component.setAjaxSingle(true );
- component.setSelectedClass("selectedClass" );
- component.setFrozenColCount(20 );
- component.setStatus("status" );
- component.setRequestDelay(20 );
- component.setEventsQueue("eventsQueue" );
- component.setData("data" );
- component.setIgnoreDupResponses(true );
-
- form.getChildren().add(component);
-
- }
-
- /*
- * setup the tets
- */
- public void tearDown() throws Exception{
- super.tearDown();
- component = null;
- form = null;
- }
-
- public void testComponent() throws Exception {
- assertEquals("org.richfaces.renderkit.html.ScrollableGridRenderer", component.getRendererType());
-
-
- }
- public void testContext(){
-
- Object state = component.saveState(facesContext);
- testRestoreState(state);
- }
-
- public void testGetters() {
- HtmlScrollableGrid component = new HtmlScrollableGrid();
-
- component.setValueBinding("onselectionchange", new MockValueBinding("onselectionchange", java.lang.String.class));
- assertEquals("onselectionchange", component.getOnselectionchange());
- component.setOnselectionchange("onselectionchange_onselectionchange" );
- assertEquals("onselectionchange_onselectionchange", component.getOnselectionchange());
- component.setValueBinding("width", new MockValueBinding("width", java.lang.String.class));
- assertEquals("width", component.getWidth());
- component.setWidth("width_width" );
- assertEquals("width_width", component.getWidth());
- component.setValueBinding("focus", new MockValueBinding("focus", java.lang.String.class));
- assertEquals("focus", component.getFocus());
- component.setFocus("focus_focus" );
- assertEquals("focus_focus", component.getFocus());
- component.setValueBinding("bypassUpdates", new MockValueBinding(new Boolean(true), java.lang.Boolean.class));
- assertEquals(true, component.isBypassUpdates());
- component.setBypassUpdates(false );
- assertEquals(false, component.isBypassUpdates());
- component.setValueBinding("limitToList", new MockValueBinding(new Boolean(true), java.lang.Boolean.class));
- assertEquals(true, component.isLimitToList());
- component.setLimitToList(false );
- assertEquals(false, component.isLimitToList());
- component.setValueBinding("timeout", new MockValueBinding(new Integer(20), java.lang.Integer.class));
- assertEquals(20, component.getTimeout());
- component.setTimeout(15 );
- assertEquals(15, component.getTimeout());
- component.setValueBinding("columnClasses", new MockValueBinding("columnClasses", java.lang.String.class));
- assertEquals("columnClasses", component.getColumnClasses());
- component.setColumnClasses("columnClasses_columnClasses" );
- assertEquals("columnClasses_columnClasses", component.getColumnClasses());
- component.setValueBinding("selection", new MockValueBinding("selection", org.richfaces.model.selection.Selection.class));
-
- SimpleSelection selection = new SimpleSelection();
- selection.addKey("key");
- component.setSelection(selection);
- assertEquals(selection, component.getSelection());
-
- component.setValueBinding("headerClass", new MockValueBinding("headerClass", java.lang.String.class));
- assertEquals("headerClass", component.getHeaderClass());
- component.setHeaderClass("headerClass_headerClass" );
- assertEquals("headerClass_headerClass", component.getHeaderClass());
- component.setValueBinding("rowClasses", new MockValueBinding("rowClasses", java.lang.String.class));
- assertEquals("rowClasses", component.getRowClasses());
- component.setRowClasses("rowClasses_rowClasses" );
- assertEquals("rowClasses_rowClasses", component.getRowClasses());
- component.setValueBinding("oncomplete", new MockValueBinding("oncomplete", java.lang.String.class));
- assertEquals("oncomplete", component.getOncomplete());
- component.setOncomplete("oncomplete_oncomplete" );
- assertEquals("oncomplete_oncomplete", component.getOncomplete());
- component.setValueBinding("sortOrder", new MockValueBinding("sortOrder", org.richfaces.model.SortOrder.class));
- SortOrder sortOrder = new SortOrder();
- sortOrder.setFields(new SortField[] {new SortField(null, 2, Boolean.TRUE)});
- component.setSortOrder(sortOrder);
- assertEquals(sortOrder, component.getSortOrder());
- component.setValueBinding("footerClass", new MockValueBinding("footerClass", java.lang.String.class));
- assertEquals("footerClass", component.getFooterClass());
- component.setFooterClass("footerClass_footerClass" );
- assertEquals("footerClass_footerClass", component.getFooterClass());
- component.setValueBinding("reRender", new MockValueBinding("reRender", java.lang.Object.class));
- assertEquals("reRender", component.getReRender());
- component.setReRender("reRender_reRender" );
- assertEquals("reRender_reRender", component.getReRender());
- component.setValueBinding("activeClass", new MockValueBinding("activeClass", java.lang.String.class));
- assertEquals("activeClass", component.getActiveClass());
- component.setActiveClass("activeClass_activeClass" );
- assertEquals("activeClass_activeClass", component.getActiveClass());
- component.setValueBinding("styleClass", new MockValueBinding("styleClass", java.lang.String.class));
- assertEquals("styleClass", component.getStyleClass());
- component.setStyleClass("styleClass_styleClass" );
- assertEquals("styleClass_styleClass", component.getStyleClass());
- component.setValueBinding("height", new MockValueBinding("height", java.lang.String.class));
- assertEquals("height", component.getHeight());
- component.setHeight("height_height" );
- assertEquals("height_height", component.getHeight());
- component.setValueBinding("captionClass", new MockValueBinding("captionClass", java.lang.String.class));
- assertEquals("captionClass", component.getCaptionClass());
- component.setCaptionClass("captionClass_captionClass" );
- assertEquals("captionClass_captionClass", component.getCaptionClass());
- component.setValueBinding("ajaxSingle", new MockValueBinding(new Boolean(true), java.lang.Boolean.class));
- assertEquals(true, component.isAjaxSingle());
- component.setAjaxSingle(false );
- assertEquals(false, component.isAjaxSingle());
- component.setValueBinding("selectedClass", new MockValueBinding("selectedClass", java.lang.String.class));
- assertEquals("selectedClass", component.getSelectedClass());
- component.setSelectedClass("selectedClass_selectedClass" );
- assertEquals("selectedClass_selectedClass", component.getSelectedClass());
- component.setValueBinding("frozenColCount", new MockValueBinding(new Integer(20), java.lang.Integer.class));
- assertEquals(20, component.getFrozenColCount());
- component.setFrozenColCount(15 );
- assertEquals(15, component.getFrozenColCount());
- component.setValueBinding("status", new MockValueBinding("status", java.lang.String.class));
- assertEquals("status", component.getStatus());
- component.setStatus("status_status" );
- assertEquals("status_status", component.getStatus());
- component.setValueBinding("requestDelay", new MockValueBinding(new Integer(20), java.lang.Integer.class));
- assertEquals(20, component.getRequestDelay());
- component.setRequestDelay(15 );
- assertEquals(15, component.getRequestDelay());
- component.setValueBinding("eventsQueue", new MockValueBinding("eventsQueue", java.lang.String.class));
- assertEquals("eventsQueue", component.getEventsQueue());
- component.setEventsQueue("eventsQueue_eventsQueue" );
- assertEquals("eventsQueue_eventsQueue", component.getEventsQueue());
- component.setValueBinding("data", new MockValueBinding("data", java.lang.Object.class));
- assertEquals("data", component.getData());
- component.setData("data_data" );
- assertEquals("data_data", component.getData());
- component.setValueBinding("ignoreDupResponses", new MockValueBinding(new Boolean(true), java.lang.Boolean.class));
- assertEquals(true, component.isIgnoreDupResponses());
- component.setIgnoreDupResponses(false );
- assertEquals(false, component.isIgnoreDupResponses());
-
-
- }
-
- private void testRestoreState(Object state){
- HtmlScrollableGrid restoredComponent = new HtmlScrollableGrid();
- restoredComponent.restoreState(facesContext, state);
-
- assertEquals(component.getOnselectionchange(), restoredComponent.getOnselectionchange());
- assertEquals(component.getWidth(), restoredComponent.getWidth());
- assertEquals(component.getFocus(), restoredComponent.getFocus());
- assertEquals(component.isBypassUpdates(), restoredComponent.isBypassUpdates());
- assertEquals(component.isLimitToList(), restoredComponent.isLimitToList());
- assertEquals(component.getTimeout(), restoredComponent.getTimeout());
- assertEquals(component.getColumnClasses(), restoredComponent.getColumnClasses());
- assertEquals(component.getSelection(), restoredComponent.getSelection());
- assertEquals(component.getHeaderClass(), restoredComponent.getHeaderClass());
- assertEquals(component.getRowClasses(), restoredComponent.getRowClasses());
- assertEquals(component.getOncomplete(), restoredComponent.getOncomplete());
- assertEquals(component.getSortOrder(), restoredComponent.getSortOrder());
- assertEquals(component.getFooterClass(), restoredComponent.getFooterClass());
- assertEquals(component.getReRender(), restoredComponent.getReRender());
- assertEquals(component.getActiveClass(), restoredComponent.getActiveClass());
- assertEquals(component.getStyleClass(), restoredComponent.getStyleClass());
- assertEquals(component.getHeight(), restoredComponent.getHeight());
- assertEquals(component.getCaptionClass(), restoredComponent.getCaptionClass());
- assertEquals(component.isAjaxSingle(), restoredComponent.isAjaxSingle());
- assertEquals(component.getSelectedClass(), restoredComponent.getSelectedClass());
- assertEquals(component.getFrozenColCount(), restoredComponent.getFrozenColCount());
- assertEquals(component.getStatus(), restoredComponent.getStatus());
- assertEquals(component.getRequestDelay(), restoredComponent.getRequestDelay());
- assertEquals(component.getEventsQueue(), restoredComponent.getEventsQueue());
- assertEquals(component.getData(), restoredComponent.getData());
- assertEquals(component.isIgnoreDupResponses(), restoredComponent.isIgnoreDupResponses());
-
- }
-
- private void assertEquals(double d1, double d2) {
- assertEquals(d1, d2, 0);
- }
-
- private void assertEquals(float d1, float d2) {
- assertEquals(d1, d2, 0);
- }
-}
Added: trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java
===================================================================
--- trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java (rev 0)
+++ trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -0,0 +1,238 @@
+package org.richfaces.renderkit.html;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.faces.component.UIColumn;
+import javax.faces.component.UIOutput;
+import javax.faces.component.html.HtmlOutputText;
+
+import org.ajax4jsf.javascript.AjaxScript;
+import org.ajax4jsf.javascript.PrototypeScript;
+import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
+import org.apache.commons.lang.StringUtils;
+
+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
+ *
+ */
+public class ScrollableDataTableRendererTest extends AbstractAjax4JsfTestCase{
+
+ UIScrollableDataTable grid;
+ int columns = 7;
+ private static Set javaScripts = new HashSet();
+
+ static {
+ javaScripts.add(AjaxScript.class.getName());
+ javaScripts.add(PrototypeScript.class.getName());
+
+ javaScripts.add("org/richfaces/renderkit/html/scripts/scrollable-data-table.js");
+ javaScripts.add("org/richfaces/renderkit/html/scripts/extend/extend.js");
+ }
+
+ public ScrollableDataTableRendererTest(String arg0) {
+ super(arg0);
+ }
+
+ public void setUp() throws Exception {
+
+ super.setUp();
+
+ // create grid
+ grid = (UIScrollableDataTable)application.createComponent("org.richfaces.component.ScrollableDataTable");
+ grid.setId("grid");
+ grid.getAttributes().put("frozenColCount", new Integer(3));
+
+ // add columns
+ for (int i = 0; i < columns; i++) {
+
+ UIColumn column = (UIColumn) createComponent(
+ "org.richfaces.Column",
+ "org.richfaces.component.Column",
+ null, null, null);
+
+
+ UIOutput outputText = (UIOutput) createComponent(
+ HtmlOutputText.COMPONENT_TYPE, HtmlOutputText.class.getName(),
+ null, null, null);
+
+ column.getFacets().put("header", outputText);
+ column.getFacets().put("footer", outputText);
+ column.getChildren().add(outputText);
+
+ grid.getChildren().add(column);
+ grid.setFirst(0);
+ grid.setRows(40);
+ }
+
+ facesContext.getViewRoot().getChildren().add(grid);
+ }
+
+ public void tearDown() throws Exception {
+ super.tearDown();
+ grid = null;
+ }
+
+ public void testRenderStyle() throws Exception {
+ HtmlPage page = renderView();
+ assertNotNull(page);
+ List links = page.getDocumentElement().getHtmlElementsByTagName("link");
+ assertNotNull(links);
+ HtmlElement link = (HtmlElement)links.get(0);
+ assertTrue(link.getAttributeValue("href").contains("css/scrollable-data-table.xcss"));
+ }
+
+ public void testRenderScripts() 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 testRenderingFrozenNormalColumns()throws Exception{
+
+ HtmlPage page = renderView();
+ assertNotNull(page);
+
+
+ HtmlElement div = page.getHtmlElementById(grid.getClientId(facesContext));
+ assertNotNull(div);
+ assertEquals("div", div.getNodeName());
+
+ String classAttr = div.getAttributeValue("class");
+ assertTrue(classAttr.contains("dr-sdt"));
+ Iterator childIter= div.getChildElementsIterator();
+
+ String id = grid.getId();
+
+ HtmlElement input = page.getHtmlElementById(id+"_hc");
+ assertNotNull(input);
+ input = null;
+ input = page.getHtmlElementById(id + "_state_input");
+ assertNotNull(input);
+ input = null;
+ input = page.getHtmlElementById(id + "_options_input");
+ assertNotNull(input);
+ input = null;
+ input = page.getHtmlElementById(id + "_rows_input");
+ assertNotNull(input);
+ input = null;
+ input = page.getHtmlElementById(id + "_submit_input");
+ assertNotNull(input);
+ input = null;
+
+ for (; childIter.hasNext();) {
+
+ HtmlElement elem = (HtmlElement) childIter.next();
+ assertNotNull(elem);
+
+ boolean res = (elem.getNodeName().equals("div") || elem.getNodeName().equals("input"));
+ assertTrue(res);
+
+ if(elem.getNodeName().equals("div")){
+
+ String elemClassAttr = elem.getAttributeValue("class");
+ res = false;
+ if(elemClassAttr.contains("dr-sdt-inlinebox")){
+ res = true;
+ }else if(elemClassAttr.contains("dr-sdt-hsplit")){
+ res = true;
+ }
+ assertTrue(res);
+
+ if(!elemClassAttr.contains("dr-sdt-hsplit")){
+
+ boolean templates = elem.getId().equals(grid.getId()+ "_GridBodyTemplate") || elem.getId().equals(grid.getId()+ "_GridFooterTemplate") || elem.getId().equals(grid.getId()+ "_GridHeaderTemplate");
+ assertTrue(templates);
+
+ Iterator divIter = elem.getChildElementsIterator();
+ HtmlElement inDiv = (HtmlElement) divIter.next();
+ assertNotNull(inDiv);
+ boolean test = false;
+ if(inDiv.getNodeName().equals("div")){
+ test = true;
+ }else if(inDiv.getNodeName().equals("iframe")){
+ test = true;
+ }
+
+ assertTrue(test);
+
+ Iterator spanIter = inDiv.getChildElementsIterator();
+
+ for (;spanIter.hasNext();) {
+
+ HtmlElement element = (HtmlElement) spanIter.next();
+ assertNotNull(element);
+ res = false;
+ if(element.getNodeName().equals("span")){
+ res = true;
+
+ }else if(element.getNodeName().equals("div")){
+ String divId = element.getAttributeValue("id");
+ assertEquals(id + ":sb", divId);
+ res = true;
+ } else if (element.getNodeName().equals("br")) {
+ res = true;
+ }
+
+ if(!res) {
+ System.out
+ .println("ScrollableDataTableRendererTest.testRenderingFrozenNormalColumns()");
+ }
+
+ assertTrue(res);
+ elemClassAttr = element.getAttributeValue("class");
+ assertNotNull(elemClassAttr);
+
+ if(element.getId().contains("FrozenBox")){
+ assertTrue(elemClassAttr.contains("dr-sdt-tmplbox dr-sdt-fb"));
+ }else if(element.getId().contains("NormalBox")){
+ assertTrue(elemClassAttr.contains("dr-sdt-tmplbox dr-sdt-nb"));
+ }
+
+
+ for (int i = 0; i < columns; i++) {
+
+ HtmlElement hcell = page.getHtmlElementById(id + ":hc_" + i);
+ assertNotNull(hcell);
+ elemClassAttr = hcell.getAttributeValue("class");
+ assertTrue(elemClassAttr.contains("dr-sdt-hc rich-sdt-header-cell"));
+
+ for (int j = 0; j < grid.getRows(); j++) {
+ HtmlElement bcell = page.getHtmlElementById(id + ":c_" + j + "_" + i);
+ assertNotNull(bcell);
+ elemClassAttr = bcell.getAttributeValue("class");
+ assertTrue(elemClassAttr.contains("dr-sdt-bc rich-sdt-column-cell"));
+
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
Deleted: trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableGridRendererTest.java
===================================================================
--- trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableGridRendererTest.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableGridRendererTest.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,236 +0,0 @@
-package org.richfaces.renderkit.html;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.faces.component.UIColumn;
-import javax.faces.component.UIOutput;
-import javax.faces.component.html.HtmlOutputText;
-
-import org.ajax4jsf.javascript.AjaxScript;
-import org.ajax4jsf.javascript.PrototypeScript;
-import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
-import org.apache.commons.lang.StringUtils;
-
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlScript;
-
-import org.richfaces.component.UIScrollableGrid;
-/**
- * @author Anton Belevich
- *
- */
-public class ScrollableGridRendererTest extends AbstractAjax4JsfTestCase{
-
- UIScrollableGrid grid;
- int columns = 7;
- private static Set javaScripts = new HashSet();
-
- static {
- javaScripts.add(AjaxScript.class.getName());
- javaScripts.add(PrototypeScript.class.getName());
- javaScripts.add("org/richfaces/renderkit/html/scripts/scrollable-grid.js");
- }
-
- public ScrollableGridRendererTest(String arg0) {
- super(arg0);
- }
-
- public void setUp() throws Exception {
-
- super.setUp();
-
- // create grid
- grid = (UIScrollableGrid)application.createComponent("org.richfaces.component.ScrollableGrid");
- grid.setId("grid");
- grid.getAttributes().put("frozenColCount", new Integer(3));
-
- // add columns
- for (int i = 0; i < columns; i++) {
-
- UIColumn column = (UIColumn) createComponent(
- "org.richfaces.Column",
- "org.richfaces.component.Column",
- null, null, null);
-
-
- UIOutput outputText = (UIOutput) createComponent(
- HtmlOutputText.COMPONENT_TYPE, HtmlOutputText.class.getName(),
- null, null, null);
-
- column.getFacets().put("header", outputText);
- column.getFacets().put("footer", outputText);
- column.getChildren().add(outputText);
-
- grid.getChildren().add(column);
- grid.setFirst(0);
- grid.setRows(40);
- }
-
- facesContext.getViewRoot().getChildren().add(grid);
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- grid = null;
- }
-
- public void testRenderStyle() throws Exception {
- HtmlPage page = renderView();
- assertNotNull(page);
- List links = page.getDocumentElement().getHtmlElementsByTagName("link");
- assertNotNull(links);
- HtmlElement link = (HtmlElement)links.get(0);
- assertTrue(link.getAttributeValue("href").contains("css/grid.xcss"));
- }
-
- public void testRenderScripts() 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 testRenderingFrozenNormalColumns()throws Exception{
-
- HtmlPage page = renderView();
- assertNotNull(page);
-
-
- HtmlElement div = page.getHtmlElementById(grid.getClientId(facesContext));
- assertNotNull(div);
- assertEquals("div", div.getNodeName());
-
- String classAttr = div.getAttributeValue("class");
- assertTrue(classAttr.contains("dr-sgrid"));
- Iterator childIter= div.getChildElementsIterator();
-
- String id = grid.getId();
-
- HtmlElement input = page.getHtmlElementById(id+"_hc");
- assertNotNull(input);
- input = null;
- input = page.getHtmlElementById(id + "_state_input");
- assertNotNull(input);
- input = null;
- input = page.getHtmlElementById(id + "_options_input");
- assertNotNull(input);
- input = null;
- input = page.getHtmlElementById(id + "_rows_input");
- assertNotNull(input);
- input = null;
- input = page.getHtmlElementById(id + "_submit_input");
- assertNotNull(input);
- input = null;
-
- for (; childIter.hasNext();) {
-
- HtmlElement elem = (HtmlElement) childIter.next();
- assertNotNull(elem);
-
- boolean res = (elem.getNodeName().equals("div") || elem.getNodeName().equals("input"));
- assertTrue(res);
-
- if(elem.getNodeName().equals("div")){
-
- String elemClassAttr = elem.getAttributeValue("class");
- res = false;
- if(elemClassAttr.contains("dr-sgrid-inlinebox")){
- res = true;
- }else if(elemClassAttr.contains("dr-sgrid-hsplit")){
- res = true;
- }
- assertTrue(res);
-
- if(!elemClassAttr.contains("dr-sgrid-hsplit")){
-
- boolean templates = elem.getId().equals(grid.getId()+ "_GridBodyTemplate") || elem.getId().equals(grid.getId()+ "_GridFooterTemplate") || elem.getId().equals(grid.getId()+ "_GridHeaderTemplate");
- assertTrue(templates);
-
- Iterator divIter = elem.getChildElementsIterator();
- HtmlElement inDiv = (HtmlElement) divIter.next();
- assertNotNull(inDiv);
- boolean test = false;
- if(inDiv.getNodeName().equals("div")){
- test = true;
- }else if(inDiv.getNodeName().equals("iframe")){
- test = true;
- }
-
- assertTrue(test);
-
- Iterator spanIter = inDiv.getChildElementsIterator();
-
- for (;spanIter.hasNext();) {
-
- HtmlElement element = (HtmlElement) spanIter.next();
- assertNotNull(element);
- res = false;
- if(element.getNodeName().equals("span")){
- res = true;
-
- }else if(element.getNodeName().equals("div")){
- String divId = element.getAttributeValue("id");
- assertEquals(id + ":sb", divId);
- res = true;
- } else if (element.getNodeName().equals("br")) {
- res = true;
- }
-
- if(!res) {
- System.out
- .println("ScrollableGridRendererTest.testRenderingFrozenNormalColumns()");
- }
-
- assertTrue(res);
- elemClassAttr = element.getAttributeValue("class");
- assertNotNull(elemClassAttr);
-
- if(element.getId().contains("FrozenBox")){
- assertTrue(elemClassAttr.contains("dr-sgrid-tmplbox dr-sgrid-fb"));
- }else if(element.getId().contains("NormalBox")){
- assertTrue(elemClassAttr.contains("dr-sgrid-tmplbox dr-sgrid-nb"));
- }
-
-
- for (int i = 0; i < columns; i++) {
-
- HtmlElement hcell = page.getHtmlElementById(id + ":hc_" + i);
- assertNotNull(hcell);
- elemClassAttr = hcell.getAttributeValue("class");
- assertTrue(elemClassAttr.contains("dr-sgrid-hc rich-sgrid-header-cell"));
-
- for (int j = 0; j < grid.getRows(); j++) {
- HtmlElement bcell = page.getHtmlElementById(id + ":c_" + j + "_" + i);
- assertNotNull(bcell);
- elemClassAttr = bcell.getAttributeValue("class");
- assertTrue(elemClassAttr.contains("dr-sgrid-bc rich-sgrid-column-cell"));
-
- }
- }
- }
- }
- }
- }
- }
-}
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 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/SelectionRendererContributorTest.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -10,10 +10,10 @@
import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
import org.apache.shale.test.mock.MockExternalContext;
-import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.component.UIScrollableDataTable;
import org.richfaces.model.selection.ClientSelection;
import org.richfaces.model.selection.SelectionRange;
-import org.richfaces.renderkit.html.ScrollableGridBaseRenderer;
+import org.richfaces.renderkit.html.ScrollableDataTableBaseRenderer;
import org.richfaces.renderkit.html.SelectionRendererContributor;
/**
@@ -22,9 +22,9 @@
*/
public class SelectionRendererContributorTest extends AbstractAjax4JsfTestCase {
- private UIScrollableGrid component;
+ private UIScrollableDataTable component;
private SelectionRendererContributor contributor;
- private ScrollableGridBaseRenderer renderer;
+ private ScrollableDataTableBaseRenderer renderer;
public SelectionRendererContributorTest(String name) {
super(name);
@@ -35,13 +35,13 @@
*/
public void setUp() throws Exception {
super.setUp();
- component = (UIScrollableGrid) application.createComponent(UIScrollableGrid.COMPONENT_TYPE);
+ component = (UIScrollableDataTable) application.createComponent(UIScrollableDataTable.COMPONENT_TYPE);
component.setValue(new ArrayList());
facesContext.getViewRoot().getChildren().add(component);
contributor = new SelectionRendererContributor();
- renderer = new ScrollableGridBaseRenderer(){
+ renderer = new ScrollableDataTableBaseRenderer(){
protected Class getComponentClass() {
- return UIScrollableGrid.class;
+ return UIScrollableDataTable.class;
}};
}
@@ -61,7 +61,7 @@
MockExternalContext mockExternalContext =
(MockExternalContext) facesContext.getExternalContext();
String name =
- SelectionRendererContributor.getSelectionInputName(facesContext, (UIScrollableGrid) component);
+ SelectionRendererContributor.getSelectionInputName(facesContext, (UIScrollableDataTable) component);
String value = "";
Deleted: trunk/ui/scrollableDataTable/src/test/java/org/richfaces/taglib/ScrollableGridTagTest.java
===================================================================
--- trunk/ui/scrollableDataTable/src/test/java/org/richfaces/taglib/ScrollableGridTagTest.java 2007-08-16 15:23:03 UTC (rev 2298)
+++ trunk/ui/scrollableDataTable/src/test/java/org/richfaces/taglib/ScrollableGridTagTest.java 2007-08-16 16:08:29 UTC (rev 2299)
@@ -1,153 +0,0 @@
-/**
- * GENERATED FILE - DO NOT EDIT
- *
- */
-package org.richfaces.taglib;
-
-import javax.faces.application.Application;
-import javax.faces.el.ValueBinding;
-import javax.faces.webapp.UIComponentTag;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.Tag;
-
-import org.richfaces.component.html.HtmlScrollableGrid;
-
-
-
-/**
- * @author shura (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.2 $ $Date: 2007/01/03 21:05:14 $
- *
- */
-public class ScrollableGridTagTest extends org.ajax4jsf.tests.AbstractAjax4JsfTestCase {
-
-
- private ScrollableGridTag tag;
-
- /**
- * Constructor to init default renderers
- */
- public ScrollableGridTagTest (String name){
- super(name);
- }
-
-
- public void setUp() throws Exception {
- super.setUp();
- tag = new ScrollableGridTag();
- tag.setParent(new UIComponentTag(){
-
- public String getComponentType() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getRendererType() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public int doStartTag() throws JspException {
- // TODO Auto-generated method stub
- return Tag.EVAL_BODY_INCLUDE;
- }
-
- public int doEndTag() throws JspException {
- // TODO Auto-generated method stub
- return Tag.EVAL_BODY_INCLUDE;
- }
-
- });
-
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- tag = null;
- }
-
-
- public void testSetPropertiesUIComponent() {
- HtmlScrollableGrid component = new HtmlScrollableGrid();
- // create binding
- Application application = null;
- ValueBinding binding = null;
-
-
- tag.setProperties(component);
-
-/*
- setStringProperty(component, "onselectionchange",this._onselectionchange);
- // TODO - setup properties for other cases.
- // name footer with type javax.faces.component.UIComponent
- setStringProperty(component, "width",this._width);
- setStringProperty(component, "stateVar",this._stateVar);
- setStringProperty(component, "rowKeyVar",this._rowKeyVar);
- setStringProperty(component, "focus",this._focus);
- // Simple type - boolean
- setBooleanProperty(component, "bypassUpdates",this._bypassUpdates);
- // TODO - handle object
- setStringProperty(component, "rowKey",this._rowKey);
- // Simple type - boolean
- setBooleanProperty(component, "limitToList",this._limitToList);
- setStringProperty(component, "var",this._var);
- // Simple type - int
- setIntegerProperty(component, "rows",this._rows);
- // Simple type - int
- setIntegerProperty(component, "timeout",this._timeout);
- setStringProperty(component, "columnClasses",this._columnClasses);
- // TODO - setup properties for other cases.
- // name header with type javax.faces.component.UIComponent
- // Simple type - int
- setIntegerProperty(component, "first",this._first);
- // TODO - setup properties for other cases.
- // name selection with type org.richfaces.model.selection.Selection
- setStringProperty(component, "headerClass",this._headerClass);
- // TODO - setup properties for other cases.
- // name responseData with type java.util.Collection
- setStringProperty(component, "rowClasses",this._rowClasses);
- setStringProperty(component, "oncomplete",this._oncomplete);
- // TODO - setup properties for other cases.
- // name componentState with type org.ajax4jsf.ajax.repeat.DataComponentState
- // TODO - setup properties for other cases.
- // name sortOrder with type org.richfaces.model.SortOrder
- setStringProperty(component, "footerClass",this._footerClass);
- // TODO - handle object
- setStringProperty(component, "reRender",this._reRender);
- setStringProperty(component, "activeClass",this._activeClass);
- // TODO - setup properties for other cases.
- // name ajaxKeys with type java.util.Set
- setStringProperty(component, "height",this._height);
- setStringProperty(component, "captionClass",this._captionClass);
- // Simple type - boolean
- setBooleanProperty(component, "ajaxSingle",this._ajaxSingle);
- setStringProperty(component, "selectedClass",this._selectedClass);
- // Simple type - int
- setIntegerProperty(component, "frozenColCount",this._frozenColCount);
- // Simple type - int
- setIntegerProperty(component, "rowIndex",this._rowIndex);
- // TODO - setup properties for other cases.
- // name ranges with type java.util.List
- // Simple type - int
- setIntegerProperty(component, "reqRowsCount",this._reqRowsCount);
- setStringProperty(component, "status",this._status);
- // Simple type - int
- setIntegerProperty(component, "requestDelay",this._requestDelay);
- setStringProperty(component, "eventsQueue",this._eventsQueue);
- // TODO - handle object
- setStringProperty(component, "data",this._data);
- // Simple type - boolean
- setBooleanProperty(component, "ignoreDupResponses",this._ignoreDupResponses);
- */
- }
-
- public void testGetRendererType(){
- assertNotNull(tag.getRendererType());
- }
-
- public void testGetComponentType(){
- assertNotNull(tag.getComponentType());
- }
-
-
-}
More information about the richfaces-svn-commits
mailing list