Author: ekoneil
Date: Tue Jul 27 09:55:01 2004
New Revision: 30787
Added:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/util/PagedDataSet.java
(contents, props changed)
Removed:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/Parameter.java
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/actionTest.jsp
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/anchorParams.jsp
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/formatting.jsp
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/group.jsp
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/image.jsp
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ColumnModel.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/DataGridModel.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/IFilter.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ISort.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/PagerModel.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/StylePolicy.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/AnchorColumnModel.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultFilter.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultSort.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultStylePolicy.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/EmptyStylePolicy.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/ImageColumnModel.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/LegacyStylePolicy.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/FilterService.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/IllegalFilterException.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/util/AttributeHelper.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AbstractColumn.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AnchorColumn.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/Columns.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/DataGrid.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/ImageColumn.java
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/LiteralColumn.java
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/Controller.jpf
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/index.jsp
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/util/portfolioXmlBean.jsp
Log:
Significant updates to the data grid.
- This starts to bring the grid in line with JSP 2.0 EL, and it runs in a
primitive way now.
- Remove a bunch of old tests that need to be re-worked as anchor and image
features start to come on-line.
- A bunch of code cleanup.
- Add PagedDataSet, which starts to encapsulate the way the DataGridModel
interacts with repeating over the data set.
BB: self
DRT: NetUI pass
CR: Daryl
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ColumnModel.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ColumnModel.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ColumnModel.java
Tue Jul 27 09:55:01 2004
@@ -18,28 +18,21 @@
*/
package org.apache.beehive.netui.datagrid.model;
-// java imports
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
-// internal imports
import org.apache.beehive.netui.tags.html.FormatTag;
import org.apache.beehive.netui.datagrid.util.AttributeHelper;
import org.apache.beehive.netui.datagrid.services.FilterService;
import org.apache.beehive.netui.datagrid.services.SortService;
-
import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.pageflow.util.PageflowTagUtils;
-
import org.apache.beehive.netui.util.logging.Logger;
-import org.apache.beehive.netui.script.common.IDataAccessProvider;
-
-// external imports
/**
*
@@ -48,7 +41,7 @@
{
private static final Logger _logger =
Logger.getInstance(ColumnModel.class);
- // @todo: externalize these -- they need to be overridable from a JSP
+ // todo: externalize these -- they need to be overridable from a JSP
private static final String EMPTY_CELL = " ";
private static final String UNSORTED_IMAGE =
"/resources/datagrid/arrow_off.png";
private static final String SORTED_ASCENDING_IMAGE =
"/resources/datagrid/arrow_down.png";
@@ -60,7 +53,6 @@
public static final int ATTR_GENERAL = 0;
public static final int ATTR_GENERAL_EXPRESSION = 1;
- private IDataAccessProvider _dap;
private DataGridModel _dataGridModel;
private StylePolicy _stylePolicy;
@@ -165,16 +157,16 @@
renderEmptyCell(buffer);
else
{
- Object value = _dataGridModel.evaluateExpression(_headerText,
"headerText");
-
+ Object value = _headerText;
+
SortService sortService = _dataGridModel.getSortService();
PageContext pageContext = _dataGridModel.getPageContext();
buffer.append(value);
- // @todo: there is an NPE in PageflowTagUtils.createActionURL a la
+ // todo: there is an NPE in PageflowTagUtils.createActionURL a la
// at
org.apache.beehive.netui.pageflow.util.PageflowTagUtils.createActionURL(PageflowTagUtils.java:139)
- // @todo: handle filter URIs, not just actions here?
+ // todo: handle filter URIs, not just actions here?
// disable sorting
// String sort = _sortUri;
// if(sort != null)
@@ -205,8 +197,8 @@
// for grouping, evaluate the data source expression here.
// that way the grouped columns can compare data to render in their
renderData methods
- Object value = _dataGridModel.evaluateExpression(_value, "value");
-
+ Object value = _value;
+
if(value != null && value.equals(getRenderData()))
setCanGroup(true);
else setCanGroup(false);
@@ -253,7 +245,7 @@
assert _dataGridModel != null;
if(_footerText != null)
- buffer.append(_dataGridModel.evaluateExpression(_footerText,
"footerText"));
+ buffer.append(_footerText);
else renderEmptyCell(buffer);
}
@@ -305,7 +297,7 @@
}
catch (JspException e)
{
- // @todo: need a way to register errors
+ // todo: need a way to register errors
if(_logger.isErrorEnabled()) _logger.error("A formatter of
type \"" + currentFormatter.getClass().getName() + "\" threw an exception " +
e, e);
}
}
@@ -315,7 +307,7 @@
return text.toString();
}
- // @todo: this should be done with cell decorators
+ // todo: this should be done with cell decorators
private static final void renderSortLink(StringBuffer buffer,
DataGridModel dataGridModel,
SortService sortService, String
sortUri,
String sortExpression, Object
value)
@@ -324,7 +316,7 @@
assert sortExpression != null;
assert sortUri != null;
- // @todo: externalize configuration
+ // todo: externalize configuration
buffer.append("<a href=\"");
buffer.append(sortUri);
buffer.append("?");
@@ -347,7 +339,7 @@
buffer.append(" ");
}
- // @todo: this should be done with cell decorators
+ // todo: this should be done with cell decorators
private static final void renderFilterLink(StringBuffer buffer,
DataGridModel dataGridModel,
String filterExpression, String
headerText,
String filterUri, Object value)
@@ -372,7 +364,7 @@
if(sr != null)
prefix = sr.getScopeKey().toString();
- // @todo: format needs to be read from a config file
+ // todo: format needs to be read from a configurable property
buffer.append("\n<a href=\"filter: ");
buffer.append(headerText);
buffer.append("\" onClick=\"return ShowFilterWindow('");
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/DataGridModel.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/DataGridModel.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/DataGridModel.java
Tue Jul 27 09:55:01 2004
@@ -18,35 +18,21 @@
*/
package org.apache.beehive.netui.datagrid.model;
-// java imports
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.JspTag;
-import javax.servlet.jsp.tagext.Tag;
-
-// internal imports
-import org.apache.beehive.netui.script.ExpressionEvaluationException;
-import org.apache.beehive.netui.script.ExpressionEvaluatorFactory;
-import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
-import org.apache.beehive.netui.script.common.ImplicitObjectBean;
-import org.apache.beehive.netui.script.common.IDataAccessProvider;
-
-import org.apache.beehive.netui.tags.datagrid.DataGrid;
-
-import org.apache.beehive.netui.util.iterator.IteratorFactory;
-import org.apache.beehive.netui.util.logging.Logger;
import org.apache.beehive.netui.datagrid.services.FilterService;
import org.apache.beehive.netui.datagrid.services.PagerService;
import org.apache.beehive.netui.datagrid.services.SortService;
-
-// external imports
+import org.apache.beehive.netui.datagrid.util.PagedDataSet;
+import org.apache.beehive.netui.script.common.IDataAccessProvider;
+import org.apache.beehive.netui.tags.datagrid.DataGrid;
+import org.apache.beehive.netui.util.logging.Logger;
/**
*
@@ -55,172 +41,48 @@
implements IDataAccessProvider
{
private static final Logger _logger =
Logger.getInstance(DataGridModel.class);
-
private static final int NO_GROUPING = -1;
- private ArrayList EMPTY_LIST = new ArrayList();
+
+ private String _name = null;
+ private int _groupDepth = NO_GROUPING;
+ private int _startRenderWindow = 0;
+ private int _endRenderWindow = 0;
private List _columns = null;
private PagerModel _pagerModel = null;
-
- // state assiociated with the IDataAccessProvider implementation
- private String _dataSource;
- private int _index = 0;
-
- // JSP references used for expression evaluation and getting into the JSP
tag
- // hierarchy of IDataAccessProvider classes
- private DataGrid _grid;
- private PageContext _pageContext;
-
- // state associated with iterating over a data set
- private Object _dataSet = null;
- private Iterator _dataSetIterator = null;
- private Object _dataItem = null;
- private int _dataSetSize;
-
+ private StylePolicy _cssPolicy = null;
private SortService _sortService = null;
private FilterService _filterService = null;
-
- private String _name = null;
-
- private int _groupDepth = NO_GROUPING;
+ private PagerService _pagerService = null;
- private StylePolicy _cssPolicy = null;
+ private DataGrid _grid;
+ private PageContext _pageContext;
- private int _startRenderWindow = 0;
- private int _endRenderWindow = 0;
+ private PagedDataSet _dataSet = null;
- private PagerService _pagerService = null;
-
public DataGridModel(DataGrid grid)
{
_grid = grid;
}
- public void setSortService(SortService sortService) {_sortService =
sortService;}
- public SortService getSortService()
- {
- if(_sortService == null)
- _sortService = SortService.getInstance(_pageContext.getRequest(),
_name);
-
- return _sortService;
- }
-
- public void setFilterService(FilterService filterService) {_filterService
= filterService;}
- public FilterService getFilterService()
- {
- if(_filterService == null)
- _filterService =
FilterService.getInstance(_pageContext.getRequest(), _name);
-
- return _filterService;
- }
-
- public void setPagerService(PagerService pagerService) {_pagerService =
pagerService;}
- public PagerService getPagerService()
- {
- if(_pagerService == null)
- _pagerService =
PagerService.getInstance(_pageContext.getRequest(), _name);
-
- return _pagerService;
- }
-
- public void setName(String name) {_name = name;}
- public String getName() {return _name;}
-
- public void setPageContext(PageContext pageContext) {_pageContext =
pageContext;}
- public PageContext getPageContext() {return _pageContext;}
-
- public List getColumns()
- {
- if(_columns != null)
- return Collections.unmodifiableList(_columns);
- else return EMPTY_LIST;
- }
-
- public ColumnModel getColumn(int index)
- {
- assert _columns != null;
- assert index < _columns.size();
-
- ColumnModel cm = (ColumnModel)_columns.get(index);
-
- return cm;
- }
-
- /*
- *
- * CSS / Style properties
- *
- */
- public void setCssPolicy(StylePolicy cssPolicy) {_cssPolicy = cssPolicy;}
- public StylePolicy getCssPolicy() {return _cssPolicy;}
-
- public void setGroupDepth(int groupDepth) {_groupDepth = groupDepth;}
- public int getGroupDepth() {return _groupDepth;}
-
- public int getDataSetSize() {return _dataSetSize;}
-
- /**
- *
- */
- public void addColumn(ColumnModel column)
- {
- column.setDataGridModel(this);
-
- if(_columns == null)
- _columns = new ArrayList();
-
- _columns.add(column);
- }
-
public void initialize()
{
- // @todo: this needs to be initialized in the DataGrid tag
- _sortService = SortService.getInstance(_pageContext.getRequest(),
_name);
-
- if(_logger.isDebugEnabled()) _logger.debug("evaluate data source: " +
_dataSource);
-
- _dataSet = evaluateExpression(_dataSource, "dataSource");
-
- if(_logger.isDebugEnabled()) _logger.debug("data set type: " +
- (_dataSet != null ?
_dataSet.getClass().toString() : "null"));
-
- try{_dataSetIterator = IteratorFactory.makeIterator(_dataSet);}
- catch(Exception e)
- {
- if(_logger.isErrorEnabled())
- _logger.error("Error evaluating dataSource attribute: " + e,
e);
- }
-
- if(_dataSetIterator == null)
- _dataSetIterator = EMPTY_LIST.iterator();
-
- if(_logger.isDebugEnabled()) _logger.debug("iterator type: " +
_dataSetIterator.getClass().getName());
-
- List list = new ArrayList();
- int size = 0;
- while(_dataSetIterator.hasNext())
- {
- list.add(_dataSetIterator.next());
- size++;
- _logger.debug("size: " + size);
- }
- _dataSetIterator = list.iterator();
- _dataSetSize = size;
+ if(_logger.isDebugEnabled()) _logger.debug("evaluate data source: " +
_dataSet.getDataSourceRef());
PagerService ps = getPagerService();
- int lastPage =
(int)Math.ceil((float)_dataSetSize/(float)ps.getPageSize());
+ int lastPage =
(int)Math.ceil((float)_dataSet.getSize()/(float)ps.getPageSize());
_startRenderWindow = (ps.getCurrentPage()-1)*10;
- _endRenderWindow = (ps.getCurrentPage() != lastPage ?
_startRenderWindow+ps.getPageSize() : _dataSetSize);
-
- if(_logger.isDebugEnabled())
- _logger.debug("start: " + _startRenderWindow + " end: " +
_endRenderWindow +
- " lastPage: " + lastPage + " pageSize: " +
ps.getPageSize() +
- " dataSetSize: " + _dataSetSize);
+ _endRenderWindow = (ps.getCurrentPage() != lastPage ?
_startRenderWindow+ps.getPageSize() : _dataSet.getSize());
+
+ if(_logger.isDebugEnabled())
+ _logger.debug("start: " + _startRenderWindow + " end: " +
_endRenderWindow +
+ " lastPage: " + lastPage + " pageSize: " +
ps.getPageSize() +
+ " dataSetSize: " + _dataSet.getSize());
assert _startRenderWindow <= _endRenderWindow;
- if(_logger.isDebugEnabled())
+ if(_logger.isDebugEnabled())
{
_logger.debug("start render window: " + _startRenderWindow);
_logger.debug("end render window: " + _endRenderWindow);
@@ -228,33 +90,15 @@
}
}
- // @todo: this is a terrible name
- public void moveCursorToStart()
+ public void addColumn(ColumnModel column)
{
- if(_logger.isDebugEnabled()) _logger.debug("_index: " + _index + "
_startRenderWindow: " + _startRenderWindow);
-
- assert _index == 0;
-
- while(_dataSetIterator.hasNext() && _index != _startRenderWindow)
- {
- _dataSetIterator.next();
- _index++;
- }
-
- if(_logger.isDebugEnabled()) _logger.debug("cursor moved to: " +
_index);
- }
+ if(_columns == null)
+ _columns = new ArrayList();
- // @todo: as is this
- public boolean endDataSet()
- {
- if(_logger.isDebugEnabled()) _logger.debug("index: " + _index + "
_endRenderWindiw: " +
- _endRenderWindow + " end
data set: " + (_index >= _endRenderWindow));
- return _index >= _endRenderWindow;
+ column.setDataGridModel(this);
+ _columns.add(column);
}
- /**
- *
- */
public void render(Writer writer)
{
assert _pageContext != null;
@@ -275,23 +119,11 @@
// header <tr>
renderHeader(buf, _columns, _cssPolicy, _sortService);
- if(_dataSetIterator != null)
+ // data <tr>
+ while(_dataSet.hasNext())
{
- assert _index == 0;
-
- moveCursorToStart();
-
- assert _index == _startRenderWindow;
-
- // data <tr>
- while(_dataSetIterator.hasNext() && !endDataSet())
- {
- _dataItem = _dataSetIterator.next();
- renderBody(buf, _index, _columns, _cssPolicy, _sortService,
_groupDepth);
- _index++;
- }
-
- _index = -1;
+ _dataSet.next();
+ renderBody(buf, _dataSet.getCurrentIndex(), _columns, _cssPolicy,
_sortService, _groupDepth);
}
// footer <tr>
@@ -306,66 +138,11 @@
public void renderPager(StringBuffer buf)
{
if(_pagerModel == null)
- _pagerModel = new PagerModel(this, getPagerService());
+ _pagerModel = new PagerModel(this);
_pagerModel.render(buf);
}
- public void openTable(StringBuffer buf)
- {
- // <table>
- buf.append("\n<table");
- _cssPolicy.writeStyleClass(buf, StylePolicy.TABLE_CLASS);
- buf.append(">");
- }
-
- public void closeTable(StringBuffer buf)
- {
- // </table>
- buf.append("\n</table>\n");
- }
-
- /**
- *
- */
- public final Object evaluateExpression(String expression, String attrName)
- {
- assert _pageContext != null && _grid != null;
-
- if(_logger.isDebugEnabled()) _logger.debug("evaluate expression: '" +
expression + "'");
-
- if(expression == null)
- return null;
-
- Tag fakeTag = new FakeTag();
- fakeTag.setParent(_grid);
- ImplicitObjectBean bean =
ImplicitObjectUtil.getImplicitObjects(_pageContext, fakeTag);
- try
- {
- Object result =
ExpressionEvaluatorFactory.getInstance().evaluateStrict(expression, bean);
- return result;
- }
- catch(ExpressionEvaluationException e)
- {
- if(_logger.isErrorEnabled())
- _logger.error("Exception evaluating expression \"" +
expression + "\": " + e, e);
-
- return null;
- }
- }
-
- private static class FakeTag
- implements javax.servlet.jsp.tagext.Tag
- {
- private Tag _parent = null;
- public int doEndTag() {return EVAL_PAGE;}
- public int doStartTag() {return SKIP_BODY;}
- public Tag getParent() {return _parent;}
- public void release() {}
- public void setPageContext(PageContext pageContext) {}
- public void setParent(Tag parent) {_parent = parent;}
- }
-
public boolean shouldRenderFooter()
{
assert _columns != null;
@@ -374,31 +151,17 @@
{
if(((ColumnModel)_columns.get(i)).getFooterText() != null) return
true;
}
-
+
return false;
}
-
- public final void openHeaderRow(StringBuffer buf)
- {
- buf.append("\n<thead>");
- buf.append("\n<tr");
- _cssPolicy.writeStyleClass(buf, StylePolicy.HEADER_ROW_CLASS);
- buf.append(">");
- }
- public void closeHeaderRow(StringBuffer buf)
- {
- buf.append("</tr>\n");
- buf.append("</thead>\n");
- }
-
private final void renderHeader(StringBuffer buf, List columns,
StylePolicy cssPolicy, SortService sortService)
{
if(_logger.isDebugEnabled()) _logger.debug("render header");
openHeaderRow(buf);
for(int i = 0; i < columns.size(); i++)
- {
+ {
ColumnModel cm = (ColumnModel)columns.get(i);
cm.openHeaderCell(buf);
@@ -408,21 +171,6 @@
closeHeaderRow(buf);
}
- public void openDataRow(StringBuffer buf)
- {
- // render the row against the current data item
- buf.append("\n<tr");
- if(getCurrentIndex() % 2 == 0)
- _cssPolicy.writeStyleClass(buf, StylePolicy.ROW_CLASS);
- else _cssPolicy.writeStyleClass(buf, StylePolicy.ALT_ROW_CLASS);
- buf.append(">");
- }
-
- public void closeDataRow(StringBuffer buf)
- {
- buf.append("</tr>");
- }
-
private void renderBody(StringBuffer buf, int index, List columns,
StylePolicy cssPolicy, SortService sortService, int groupDepth)
{
if(_logger.isDebugEnabled()) _logger.debug("render body");
@@ -439,7 +187,6 @@
column.onDataCellPreRender();
// handle grouping
- boolean disableGroup = false;
if(groupDepth > NO_GROUPING && i < groupDepth)
{
if(i == 0)
@@ -447,7 +194,7 @@
if(column.getCanGroup())
column.setShouldGroup(true);
}
- else
+ else
{
ColumnModel prevColumn = (ColumnModel)columns.get(i-1);
if(prevColumn.getShouldGroup() && column.getCanGroup())
@@ -470,6 +217,47 @@
closeDataRow(buf);
}
+ public void openTable(StringBuffer buf)
+ {
+ buf.append("\n<table");
+ _cssPolicy.writeStyleClass(buf, StylePolicy.TABLE_CLASS);
+ buf.append(">");
+ }
+
+ public void closeTable(StringBuffer buf)
+ {
+ buf.append("\n</table>\n");
+ }
+
+ public final void openHeaderRow(StringBuffer buf)
+ {
+ buf.append("\n<thead>");
+ buf.append("\n<tr");
+ _cssPolicy.writeStyleClass(buf, StylePolicy.HEADER_ROW_CLASS);
+ buf.append(">");
+ }
+
+ public void closeHeaderRow(StringBuffer buf)
+ {
+ buf.append("</tr>\n");
+ buf.append("</thead>\n");
+ }
+
+ public void openDataRow(StringBuffer buf)
+ {
+ // render the row against the current data item
+ buf.append("\n<tr");
+ if(getCurrentIndex() % 2 == 0)
+ _cssPolicy.writeStyleClass(buf, StylePolicy.ROW_CLASS);
+ else _cssPolicy.writeStyleClass(buf, StylePolicy.ALT_ROW_CLASS);
+ buf.append(">");
+ }
+
+ public void closeDataRow(StringBuffer buf)
+ {
+ buf.append("</tr>");
+ }
+
public static void openFooterRow(StringBuffer buf)
{
buf.append("\n<tr>");
@@ -477,7 +265,7 @@
public static void closeFooterRow(StringBuffer buf)
{
- buf.append("</tr>");
+ buf.append("\n</tr>");
}
private static void renderFooter(StringBuffer buf, List columns,
StylePolicy cssPolicy)
@@ -494,7 +282,68 @@
}
closeFooterRow(buf);
}
-
+
+ public void setDataSet(PagedDataSet dataSet) {_dataSet = dataSet;}
+ public PagedDataSet getDataSet() {return _dataSet;}
+
+ public void setSortService(SortService sortService) {_sortService =
sortService;}
+ public SortService getSortService()
+ {
+ if(_sortService == null)
+ _sortService = SortService.getInstance(_pageContext.getRequest(),
_name);
+
+ return _sortService;
+ }
+
+ public void setFilterService(FilterService filterService) {_filterService
= filterService;}
+ public FilterService getFilterService()
+ {
+ if(_filterService == null)
+ _filterService =
FilterService.getInstance(_pageContext.getRequest(), _name);
+
+ return _filterService;
+ }
+
+ public void setPagerService(PagerService pagerService) {_pagerService =
pagerService;}
+ public PagerService getPagerService()
+ {
+ if(_pagerService == null)
+ _pagerService =
PagerService.getInstance(_pageContext.getRequest(), _name);
+
+ return _pagerService;
+ }
+
+ public void setName(String name) {_name = name;}
+ public String getName() {return _name;}
+
+ public void setPageContext(PageContext pageContext) {_pageContext =
pageContext;}
+ public PageContext getPageContext() {return _pageContext;}
+
+ public List getColumns()
+ {
+ if(_columns != null)
+ return Collections.unmodifiableList(_columns);
+ else return Collections.EMPTY_LIST;
+ }
+
+ public ColumnModel getColumn(int index)
+ {
+ assert _columns != null;
+ assert index < _columns.size();
+
+ ColumnModel cm = (ColumnModel)_columns.get(index);
+
+ return cm;
+ }
+
+ public void setCssPolicy(StylePolicy cssPolicy) {_cssPolicy = cssPolicy;}
+ public StylePolicy getCssPolicy() {return _cssPolicy;}
+
+ public void setGroupDepth(int groupDepth) {_groupDepth = groupDepth;}
+ public int getGroupDepth() {return _groupDepth;}
+
+ public int getDataSetSize() {return _dataSet.getSize();}
+
/* ===========================================================
*
* IDataAccessProvider implementation
@@ -503,12 +352,12 @@
*/
public int getCurrentIndex()
{
- return _index;
+ return _dataSet.getCurrentIndex();
}
public Object getCurrentItem()
{
- return _dataItem;
+ return _dataSet.getCurrentItem();
}
public Object getCurrentMetadata()
@@ -516,14 +365,14 @@
throw new UnsupportedOperationException("Metadata is not available on
the current data item.");
}
- public void setDataSource(String dataSource)
+ public void setDataSource(String dataSourceRef)
{
- _dataSource = dataSource;
+ throw new UnsupportedOperationException("Need to remove this method
from IDataAccessProvider!");
}
public String getDataSource()
{
- return _dataSource;
+ return _dataSet.getDataSourceRef();
}
public IDataAccessProvider getProviderParent()
@@ -531,24 +380,14 @@
return _grid.getProviderParent();
}
- public boolean isBindingOnClient()
- {
- return false;
- }
-
public Object nextDataItem()
{
- _dataItem = _dataSetIterator.next();
- _index++;
-
- if(_logger.isDebugEnabled()) _logger.debug("next index: " + _index);
-
- return _dataItem;
+ return _dataSet.next();
}
public boolean hasNextDataItem()
{
- boolean hasNext = _dataSetIterator.hasNext();
+ boolean hasNext = _dataSet.hasNext();
if(_logger.isDebugEnabled()) _logger.debug("data set hasNext: " +
hasNext);
return hasNext;
}
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/IFilter.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/IFilter.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/IFilter.java
Tue Jul 27 09:55:01 2004
@@ -18,12 +18,6 @@
*/
package org.apache.beehive.netui.datagrid.model;
-// java imports
-
-// internal imports
-
-// external imports
-
/**
*
*/
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ISort.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ISort.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/ISort.java
Tue Jul 27 09:55:01 2004
@@ -18,12 +18,6 @@
*/
package org.apache.beehive.netui.datagrid.model;
-// java imports
-
-// internal imports
-
-// external imports
-
/**
*
*/
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/PagerModel.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/PagerModel.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/PagerModel.java
Tue Jul 27 09:55:01 2004
@@ -18,15 +18,10 @@
*/
package org.apache.beehive.netui.datagrid.model;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.datagrid.services.PagerService;
import org.apache.beehive.netui.pageflow.util.PageflowTagUtils;
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
*
*/
@@ -44,7 +39,7 @@
private PagerService _pagerService = null;
- public PagerModel(DataGridModel model, PagerService pagerService)
+ public PagerModel(DataGridModel model)
{
_pagerService = model.getPagerService();
_model = model;
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/StylePolicy.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/StylePolicy.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/StylePolicy.java
Tue Jul 27 09:55:01 2004
@@ -18,13 +18,8 @@
*/
package org.apache.beehive.netui.datagrid.model;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
*
*/
@@ -32,7 +27,7 @@
{
private static final Logger _logger =
Logger.getInstance(StylePolicy.class);
- // @todo: is this the correct delimiter relative to the CSS spec?
+ // todo: is this the correct delimiter relative to the CSS spec?
private static final String DELIM = ".";
public static final int TABLE_CLASS = 1;
@@ -102,8 +97,7 @@
case DATA_CELL_CLASS: return getDataCellClass();
case FOOTER_CELL_CLASS: return getFooterCellClass();
case HEADER_CELL_SORTED_CLASS: return getHeaderCellSortedClass();
- //case DATA_CELL_SORTED_CLASS: return getDataCellSortedClass();
- default:
+ default:
{
if(_logger.isDebugEnabled()) _logger.debug("Unable to file
style class for class type \"" + cssClassType + "\".");
return "";
@@ -111,8 +105,7 @@
}
}
- // @todo: should the styleClass be an int that selects which
- // style to use from a switch or something?
+ // todo: should the styleClass be an int that selects which style to use
from a switch or something?
private void writeStyleClass(StringBuffer buf, String cssClass)
{
if(cssClass.equals(""))
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/AnchorColumnModel.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/AnchorColumnModel.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/AnchorColumnModel.java
Tue Jul 27 09:55:01 2004
@@ -18,16 +18,10 @@
*/
package org.apache.beehive.netui.datagrid.model.impl;
-// java imports
import java.net.MalformedURLException;
-
import java.util.HashMap;
-import java.util.Iterator;
-
-import javax.servlet.ServletResponse;
import javax.servlet.jsp.PageContext;
-// internal imports
import org.apache.beehive.netui.datagrid.model.ColumnModel;
import org.apache.beehive.netui.datagrid.model.DataGridModel;
@@ -39,10 +33,8 @@
import org.apache.beehive.netui.util.ParamHelper;
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
- * @todo: significant JavaScript support
+ * todo: significant JavaScript support
*/
public class AnchorColumnModel
extends ColumnModel
@@ -78,15 +70,6 @@
_logger.debug("add parameter named \"" + name + "\"");
ParamHelper.addParam(_params,name,value);
-
-// _logger.debug("map identityHashCode: " +
System.identityHashCode(_params));
-// Iterator iter = _params.keySet().iterator();
-// while(iter.hasNext())
-// {
-// Object key = iter.next();
-// Object val = _params.get(key);
-// _logger.debug("map has key: " + key + " with value: " + val);
-// }
}
public void renderDataCell(StringBuffer buffer)
@@ -108,41 +91,24 @@
href = PageflowTagUtils.createActionURL(pc, _action);
if(_logger.isDebugEnabled()) _logger.debug("action URL \"" + href
+ "\"");
}
- else href = tm.evaluateExpression(_href, "href");
-
+ else href = _href;
+
assert href != null;
sHref = href.toString();
if(_logger.isDebugEnabled())
_logger.debug("handle param set of size: " + (_params != null ?
_params.size() : 0));
- HashMap nowParams = null;
- if ((_params != null) && (_params.size()>0))
- {
- nowParams = new HashMap();
- Iterator keys = _params.keySet().iterator();
- while(keys.hasNext())
- {
- Object key = keys.next();
- Object value = _params.get(key);
- if(value instanceof String)
- {
- value = tm.evaluateExpression((String)value, "paramValue");
- }
- nowParams.put(key, value);
- }
- }
-
- String url = calculateURL(pc, sHref, nowParams);
+ String url = calculateURL(pc, sHref, _params);
if(_logger.isDebugEnabled()) _logger.debug("calculated URL: " + url);
-
+
buffer.append("<a");
renderAttribute(buffer, url, "href");
buffer.append(">");
buffer.append("<span");
buffer.append(">");
- Object value = tm.evaluateExpression(getValue(), "value");
+ Object value = getValue();
buffer.append(value);
buffer.append("</span>");
buffer.append("</a>");
@@ -157,6 +123,8 @@
url = PageflowTagUtils.computeURL(pageContext, null, destination,
null, null, queryParams, null, true);
String type = URLRewriter.ACTION_UNSECURE;
+
+ // todo: BUG -- there is an ArrayIndexOutOfBounds exception thrown
when URL is ""
if (URLRewriterService.needsSecure(pageContext.getRequest(),
pageContext.getServletContext(), url, true))
type = URLRewriter.ACTION_SECURE;
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultFilter.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultFilter.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultFilter.java
Tue Jul 27 09:55:01 2004
@@ -18,16 +18,11 @@
*/
package org.apache.beehive.netui.datagrid.model.impl;
-// java imports
import java.util.HashMap;
-// internal imports
import org.apache.beehive.netui.datagrid.model.IFilter;
import org.apache.beehive.netui.datagrid.services.IllegalFilterException;
-
import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
/**
*
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultSort.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultSort.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultSort.java
Tue Jul 27 09:55:01 2004
@@ -18,13 +18,8 @@
*/
package org.apache.beehive.netui.datagrid.model.impl;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.datagrid.model.ISort;
import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
/**
*
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultStylePolicy.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultStylePolicy.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/DefaultStylePolicy.java
Tue Jul 27 09:55:01 2004
@@ -18,13 +18,8 @@
*/
package org.apache.beehive.netui.datagrid.model.impl;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.datagrid.model.StylePolicy;
import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
/**
*
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/EmptyStylePolicy.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/EmptyStylePolicy.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/EmptyStylePolicy.java
Tue Jul 27 09:55:01 2004
@@ -18,13 +18,8 @@
*/
package org.apache.beehive.netui.datagrid.model.impl;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.datagrid.model.StylePolicy;
import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
/**
*
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/ImageColumnModel.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/ImageColumnModel.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/ImageColumnModel.java
Tue Jul 27 09:55:01 2004
@@ -18,17 +18,11 @@
*/
package org.apache.beehive.netui.datagrid.model.impl;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.datagrid.model.ColumnModel;
-
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
- * @todo: significant JavaScript support
+ * todo: support the significant JavaScript support
*/
public class ImageColumnModel
extends ColumnModel
@@ -76,15 +70,15 @@
public void renderDataCell(StringBuffer buffer)
{
// render the value data from the super
- // @todo: right now, this goes on the left-side of the rendered image;
need to make this configurable
+ // todo: right now, this goes on the left-side of the rendered image;
need to make this configurable
if(getValue() != null)
super.renderDataCell(buffer);
- // @todo: need to render the image as the HTML tags render the image
+ // todo: need to render the image as the HTML tags render the image
buffer.append("<img src=\"");
- Object src = getDataGridModel().evaluateExpression(_src, "src");
-
+ Object src = _src;
+
buffer.append(src);
buffer.append("\"");
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/LegacyStylePolicy.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/LegacyStylePolicy.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/model/impl/LegacyStylePolicy.java
Tue Jul 27 09:55:01 2004
@@ -18,12 +18,7 @@
*/
package org.apache.beehive.netui.datagrid.model.impl;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.datagrid.model.StylePolicy;
-
-// external imports
/**
*
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/FilterService.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/FilterService.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/FilterService.java
Tue Jul 27 09:55:01 2004
@@ -303,7 +303,6 @@
}
}
}
- else System.out.println("_altParams has no additional parameters");
if(_logger.isDebugEnabled()) _logger.debug("filter query string with
alt params: " + buf.toString());
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/IllegalFilterException.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/IllegalFilterException.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/services/IllegalFilterException.java
Tue Jul 27 09:55:01 2004
@@ -18,12 +18,6 @@
*/
package org.apache.beehive.netui.datagrid.services;
-// java imports
-
-// internal imports
-
-// external imports
-
/**
*
*/
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/util/AttributeHelper.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/util/AttributeHelper.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/util/AttributeHelper.java
Tue Jul 27 09:55:01 2004
@@ -18,12 +18,6 @@
*/
package org.apache.beehive.netui.datagrid.util;
-// java imports
-
-// internal imports
-
-// external imports
-
/**
*
*/
Added:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/util/PagedDataSet.java
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/datagrid/util/PagedDataSet.java
Tue Jul 27 09:55:01 2004
@@ -0,0 +1,136 @@
+/*
+ * B E A S Y S T E M S
+ * Copyright 2002-2004 BEA Systems, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.datagrid.util;
+
+import java.util.Iterator;
+import java.util.ArrayList;
+import java.util.Collections;
+
+import org.apache.beehive.netui.util.logging.Logger;
+
+/**
+ *
+ */
+public class PagedDataSet
+ implements Iterator
+{
+ private Logger _logger = Logger.getInstance(PagedDataSet.class);
+
+ private ArrayList _list = null;
+ private Iterator _dataSetIterator = null;
+ private Object _currentItem = null;
+
+ private String _dataSourceRef = null;
+ private int _currentIndex = 0;
+ private int _dataSetSize = 0;
+
+ private int _startWindow = -1;
+ private int _endWindow = -1;
+
+ private boolean _advancedToPage = false;
+
+ public PagedDataSet(String dataSourceRef, Iterator iterator)
+ {
+ _dataSourceRef = dataSourceRef;
+
+ if(iterator == null)
+ _dataSetIterator = Collections.EMPTY_LIST.iterator();
+ else _dataSetIterator = iterator;
+
+ if(_logger.isDebugEnabled()) _logger.debug("iterator type: " +
_dataSetIterator.getClass().getName());
+
+ _list = new ArrayList();
+ while(_dataSetIterator.hasNext())
+ {
+ _list.add(_dataSetIterator.next());
+ _dataSetSize++;
+ if(_logger.isDebugEnabled()) _logger.debug("dataSetSize: " +
_dataSetSize);
+ }
+ _dataSetIterator = _list.iterator();
+ }
+
+ public void createWindow(int startWindow, int endWindow)
+ {
+ _startWindow = startWindow;
+ _endWindow = endWindow;
+ }
+
+ public boolean hasNext()
+ {
+ // paging support -- advanced to the correct data window if necessary
+ if(!_advancedToPage && _startWindow > -1)
+ {
+ assert _currentIndex == 0;
+
+ while(_dataSetIterator.hasNext() && _currentIndex != _startWindow)
+ {
+ _dataSetIterator.next();
+ _currentIndex++;
+ }
+ _advancedToPage = true;
+ }
+ else if(_endWindow > -1 && (_currentIndex >= _endWindow))
+ {
+ if(_logger.isDebugEnabled()) _logger.debug("current index: " +
_currentIndex + " _endRenderWindiw: " +
+ _endWindow + " end data
set: " + (_currentIndex >= _endWindow));
+ return false;
+ }
+
+ boolean hasNext = _dataSetIterator.hasNext();
+ if(!hasNext)
+ {
+ _currentIndex = -1;
+ _currentItem = null;
+ }
+
+ return hasNext;
+ }
+
+ public Object next()
+ {
+ _currentItem = _dataSetIterator.next();
+ _currentIndex++;
+ return _currentItem;
+ }
+
+ public void remove()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public String getDataSourceRef()
+ {
+ return _dataSourceRef;
+ }
+
+ public int getSize()
+ {
+ return _dataSetSize;
+ }
+
+ public int getCurrentIndex()
+ {
+ return _currentIndex;
+ }
+
+ public Object getCurrentItem()
+ {
+ return _currentItem;
+ }
+}
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AbstractColumn.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AbstractColumn.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AbstractColumn.java
Tue Jul 27 09:55:01 2004
@@ -18,20 +18,16 @@
*/
package org.apache.beehive.netui.tags.datagrid;
-// java imports
import javax.servlet.jsp.tagext.Tag;
-// internal imports
import org.apache.beehive.netui.datagrid.model.ColumnModel;
import org.apache.beehive.netui.datagrid.model.DataGridModel;
import org.apache.beehive.netui.tags.AbstractBaseTag;
import org.apache.beehive.netui.tags.html.Formattable;
-import org.apache.beehive.netui.tags.html.FormatTag;
+import org.apache.beehive.netui.tags.html.FormatTag.Formatter;
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
*
*/
@@ -44,45 +40,53 @@
private Columns _parent = null;
private DataGrid _dataGrid = null;
+ private String _value = null;
+ private Boolean _filterable = null;
+ private Boolean _sortable = null;
+ private String _sortExpression = null;
+ private String _filterExpression = null;
+ private String _headerText = null;
+ private String _footerText = null;
+
/**
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setFilterable(boolean filterable)
{getColumnModel().setFilterable(new Boolean(filterable));}
+ public void setFilterable(boolean filterable) {_filterable = new
Boolean(filterable);}
/**
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setSortable(boolean sortable)
{getColumnModel().setSortable(new Boolean(sortable));}
+ public void setSortable(boolean sortable) {_sortable = new
Boolean(sortable);}
/**
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setSortExpression(String sortExpression)
{getColumnModel().setSortExpression(sortExpression);}
+ public void setSortExpression(String sortExpression) {_sortExpression =
sortExpression;}
/**
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setFilterExpression(String filterExpression)
{getColumnModel().setFilterExpression(filterExpression);}
+ public void setFilterExpression(String filterExpression)
{_filterExpression = filterExpression;}
/**
- * @netui:attribute required="false"
- * @netui.tldx:attribute language="netuiexpression"
+ * @netui:attribute required="false" rtexprvalue="true"
+ * @netui.tldx:attribute
*/
- public void setHeaderText(String headerText)
{getColumnModel().setHeaderText(headerText);}
+ public void setHeaderText(String headerText) {_headerText = headerText;}
/**
- * @netui:attribute required="false"
- * @netui.tldx:attribute language="netuiexpression"
+ * @netui:attribute required="false" rtexprvalue="true"
+ * @netui.tldx:attribute
*/
- public void setFooterText(String footerText)
{getColumnModel().setFooterText(footerText);}
+ public void setFooterText(String footerText) {_footerText = footerText;}
/**
- * @netui:attribute required="true"
- * @netui.tldx:attribute language="netuiexpression"
+ * @netui:attribute required="true" rtexprvalue="true"
+ * @netui.tldx:attribute
*/
- public void setValue(String value) {getColumnModel().setValue(value);}
+ public void setValue(String value) {_value = value;}
- public void addFormatter(FormatTag.Formatter formatter)
+ public void addFormatter(Formatter formatter)
{
getColumnModel().addFormatter(formatter);
}
@@ -95,10 +99,10 @@
assert getParent() instanceof Columns;
assert getColumnModel() != null;
- if(_logger.isDebugEnabled()) _logger.debug("start tag. grid render
state: " + gridRenderState + " columns render state: " + columnsRenderState);
+ if(_logger.isDebugEnabled())
+ _logger.debug("start tag. grid render state: " + gridRenderState
+ " columns render state: " + columnsRenderState);
- // when starting to render, the ColumnModel associated with this tag
- // needs to be created
+ // when starting to render, the ColumnModel associated with this tag
needs to be created
if(gridRenderState == DataGrid.START_RENDER_STATE)
{
ColumnModel cm = getColumnModel();
@@ -111,6 +115,19 @@
{
ColumnModel cm = getDataGrid().getNextColumnModel();
setColumnModel(cm);
+
+ cm.setValue(_value);
+ cm.setHeaderText(_headerText);
+ cm.setFooterText(_footerText);
+ if(_filterable != null)
+ cm.setFilterable(_filterable);
+ cm.setFilterExpression(_filterExpression);
+ if(_sortable != null)
+ cm.setSortable(_sortable);
+ cm.setSortExpression(_sortExpression);
+
+ // allow subclasses to apply attributes to their ColumnModel
objects
+ applyAttributes();
}
if(columnsRenderState == Columns.DATA_RENDER_STATE)
@@ -123,82 +140,81 @@
if(_logger.isDebugEnabled()) _logger.debug("end tag");
int retVal = EVAL_PAGE;
- int renderType = getDataGrid().getRenderType();
int gridRenderState = getDataGrid().getRenderState();
- if(renderType == DataGrid.JSP_TAG_RENDERING)
+ if (gridRenderState == DataGrid.START_RENDER_STATE)
+ {
+ retVal = EVAL_PAGE;
+ }
+ else if (gridRenderState == DataGrid.GRID_RENDER_STATE)
{
- if(gridRenderState == DataGrid.START_RENDER_STATE)
+ StringBuffer buf = new StringBuffer();
+ int renderState = getColumnsTag().getRenderState();
+ ColumnModel cm = getColumnModel();
+
+ // todo: need to assert that the identityHashCode of 'cm' is
well-known
+ DataGridModel dgm = getDataGrid().getDataGridModel();
+
+ if (_logger.isDebugEnabled())
{
- retVal = EVAL_PAGE;
+ _logger.debug("current column\n\trender state: " +
renderState);
+ _logger.debug("\tmodel: " + cm);
+ _logger.debug("\tidentity hash code: " +
System.identityHashCode(cm));
}
- else if(gridRenderState == DataGrid.GRID_RENDER_STATE)
+
+ assert dgm != null;
+ assert cm != null;
+
+ if (renderState == Columns.HEADER_RENDER_STATE)
{
- StringBuffer buf = new StringBuffer();
- int renderState = getColumnsTag().getRenderState();
- ColumnModel cm = getColumnModel();
- // @todo: need to assert that the identityHashCode of 'cm' is
well-known
- DataGridModel dgm = getDataGrid().getDataGridModel();
-
- if(_logger.isDebugEnabled()) _logger.debug("current column
render state: " + renderState);
- if(_logger.isDebugEnabled()) _logger.debug("current column
model: " + cm);
-
- assert dgm != null;
- assert cm != null;
-
- if(renderState == Columns.HEADER_RENDER_STATE)
- {
- if(_logger.isDebugEnabled()) _logger.debug("render a
column's header cell");
-
- cm.openHeaderCell(buf);
- cm.renderHeader(buf);
- cm.closeHeaderCell(buf);
- }
- else if(renderState == Columns.DATA_RENDER_STATE)
- {
- if(_logger.isDebugEnabled()) _logger.debug("render a
column's data cell");
+ if (_logger.isDebugEnabled()) _logger.debug("render a column's
header cell");
- cm.onDataCellPreRender();
-
- int index = getDataGrid().getCurrentIndex();
- int groupDepth = dgm.getGroupDepth();
-
- if(_logger.isDebugEnabled()) _logger.debug("column index:
" + index);
-
- // handle grouping
- boolean disableGroup = false;
- if(groupDepth > Columns.NO_GROUPING && index < groupDepth)
- {
- if(index == 0)
- {
- if(cm.getCanGroup())
- cm.setShouldGroup(true);
- }
- else
- {
- ColumnModel prevColumn = dgm.getColumn(index-1);
- if(cm.getShouldGroup() && cm.getCanGroup())
- cm.setShouldGroup(true);
- }
- }
+ cm.openHeaderCell(buf);
+ cm.renderHeader(buf);
+ cm.closeHeaderCell(buf);
+ }
+ else if (renderState == Columns.DATA_RENDER_STATE)
+ {
+ if (_logger.isDebugEnabled()) _logger.debug("render a column's
data cell");
- cm.openDataCell(buf);
- cm.renderDataCell(buf);
- cm.closeDataCell(buf);
- cm.onDataCellPostRender();
- }
- else if(renderState == Columns.FOOTER_RENDER_STATE)
+ cm.onDataCellPreRender();
+
+ int index = getDataGrid().getCurrentIndex();
+ int groupDepth = dgm.getGroupDepth();
+
+ if (_logger.isDebugEnabled()) _logger.debug("column index: " +
index);
+
+ // handle grouping
+ if (groupDepth > Columns.NO_GROUPING && index < groupDepth)
{
- if(_logger.isDebugEnabled()) _logger.debug("render a
column's footer cell");
-
- cm.openFooterCell(buf);
- cm.renderFooterCell(buf);
- cm.closeFooterCell(buf);
+ if (index == 0)
+ {
+ if (cm.getCanGroup())
+ cm.setShouldGroup(true);
+ }
+ else
+ {
+ if (cm.getShouldGroup() && cm.getCanGroup())
+ cm.setShouldGroup(true);
+ }
}
-
- if(buf != null && buf.length() > 0)
- getDataGrid().appendContent(buf.toString());
+
+ cm.openDataCell(buf);
+ cm.renderDataCell(buf);
+ cm.closeDataCell(buf);
+ cm.onDataCellPostRender();
+ }
+ else if (renderState == Columns.FOOTER_RENDER_STATE)
+ {
+ if (_logger.isDebugEnabled()) _logger.debug("render a column's
footer cell");
+
+ cm.openFooterCell(buf);
+ cm.renderFooterCell(buf);
+ cm.closeFooterCell(buf);
}
+
+ if (buf != null && buf.length() > 0)
+ getDataGrid().appendContent(buf.toString());
}
localRelease();
@@ -211,15 +227,27 @@
super.localRelease();
_parent = null;
_dataGrid = null;
+
+ _value = null;
+ _filterable = null;
+ _filterExpression = null;
+ _sortable = null;
+ _sortExpression = null;
+ _headerText = null;
+ _footerText = null;
}
protected abstract ColumnModel getColumnModel();
protected abstract void setColumnModel(ColumnModel model);
- // @todo: cache this
+ protected void applyAttributes()
+ {
+ }
+
protected Columns getColumnsTag()
{
+ // todo: error reporting
assert getParent() instanceof Columns;
if(_parent != null)
@@ -232,13 +260,15 @@
protected DataGrid getDataGrid()
{
+ if(_dataGrid != null)
+ return _dataGrid;
+
Tag dataGrid = findAncestorWithClass(this, DataGrid.class);
assert dataGrid != null;
_dataGrid = (DataGrid)dataGrid;
- // @todo: error reporting
-
+ // todo: error reporting
return _dataGrid;
}
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AnchorColumn.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AnchorColumn.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/AnchorColumn.java
Tue Jul 27 09:55:01 2004
@@ -89,28 +89,29 @@
private AnchorColumnModel _column;
+ private String _href = null;
+ private String _scope = null;
+ private String _action = null;
+
/**
- * @jsptagref.attributedescription
- * The URL that is invoked when the column header is clicked.
- *
+ * @jsptagref.attributedescription The URL that is invoked when the column
header is clicked.
* @jsptagref.databindable false
- *
* @jsptagref.attributesyntaxvalue <i>string_href</i>
*
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setHref(String href)
{((AnchorColumnModel)getColumnModel()).setHref(href);}
+ public void setHref(String href) {_href = href;}
/**
* @netui:attribute required="false"
*/
- public void setScope(String scope)
{((AnchorColumnModel)getColumnModel()).setScopeId(scope);}
+ public void setScope(String scope) {_scope = scope;}
/**
* @netui:attribute required="false"
* @netui.tldx:attribute category="general" reftype="netui-action-url"
*/
- public void setAction(String action)
{((AnchorColumnModel)getColumnModel()).setAction(action);}
+ public void setAction(String action) {_action = action;}
public void addParameter(String name, Object value)
throws JspException
@@ -123,15 +124,26 @@
return "AnchorColumn";
}
+ protected void applyAttributes()
+ {
+ _column.setAction(_action);
+ _column.setHref(_href);
+ _column.setScopeId(_scope);
+ }
+
public void localRelease()
{
super.localRelease();
_column.removeAllParameters();
_column = null;
+ _href = null;
+ _scope = null;
+ _action = null;
}
protected void setColumnModel(ColumnModel column)
{
+ assert column instanceof AnchorColumnModel;
_column = (AnchorColumnModel)column;
}
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/Columns.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/Columns.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/Columns.java
Tue Jul 27 09:55:01 2004
@@ -87,11 +87,8 @@
public String getTagName() {return "Columns";}
/**
- * @jsptagref.attributedescription
- * The action method that will handle the filter operation.
- *
+ * @jsptagref.attributedescription The action method that will handle the
filter operation.
* @jsptagref.databindable false
- *
* @jsptagref.attributesyntaxvalue <i>string_filterAction</i>
*
* @netui:attribute required="false"
@@ -99,11 +96,8 @@
public void setFilterAction(String filterAction) {_filterAction =
filterAction;}
/**
- * @jsptagref.attributedescription
- * The action method that will handle the sort operation.
- *
+ * @jsptagref.attributedescription The action method that will handle the
sort operation.
* @jsptagref.databindable false
- *
* @jsptagref.attributesyntaxvalue <i>string_sortAction</i>
*
* @netui:attribute required="false"
@@ -114,13 +108,11 @@
* @netui:attribute required="false"
*/
public void setDefaultSortable(boolean sortable) {_sortable = new
Boolean(sortable);}
- public Boolean getDefaultSortable(boolean sortable) {return _sortable;}
/**
* @netui:attribute required="false"
*/
public void setDefaultFilterable(boolean filterable) {_filterable = new
Boolean(filterable);}
- public Boolean getDefaultFilterable(boolean filterable) {return
_filterable;}
/**
* @netui:attribute required="false"
@@ -134,22 +126,19 @@
assert _grid != null;
_gridModel = _grid.getDataGridModel();
- int gridRenderType = _grid.getRenderType();
- if(gridRenderType == DataGrid.JSP_TAG_RENDERING)
+ int gridRenderState = _grid.getRenderState();
+ if (gridRenderState == DataGrid.START_RENDER_STATE)
{
- int gridRenderState = _grid.getRenderState();
- if(gridRenderState == DataGrid.START_RENDER_STATE)
- {
- }
- else if(gridRenderState == DataGrid.GRID_RENDER_STATE)
- {
- StringBuffer content = new StringBuffer();
- _renderState = HEADER_RENDER_STATE;
- _gridModel.openHeaderRow(content);
- _grid.appendContent(content.toString());
- }
+ // no-op
}
-
+ else if (gridRenderState == DataGrid.GRID_RENDER_STATE)
+ {
+ StringBuffer content = new StringBuffer();
+ _renderState = HEADER_RENDER_STATE;
+ _gridModel.openHeaderRow(content);
+ _grid.appendContent(content.toString());
+ }
+
return EVAL_BODY_BUFFERED;
}
@@ -157,69 +146,64 @@
{
int retVal = EVAL_BODY_BUFFERED;
- int gridRenderType = _grid.getRenderType();
- if(gridRenderType == DataGrid.JSP_TAG_RENDERING)
+ int gridRenderState = _grid.getRenderState();
+ if (gridRenderState == DataGrid.START_RENDER_STATE)
{
- int gridRenderState = _grid.getRenderState();
- if(gridRenderState == DataGrid.START_RENDER_STATE)
+ retVal = SKIP_BODY;
+ }
+ else if (gridRenderState == DataGrid.GRID_RENDER_STATE)
+ {
+ _grid.resetColumnModelIndex();
+ StringBuffer content = new StringBuffer();
+ if (_renderState == HEADER_RENDER_STATE)
{
- retVal = SKIP_BODY;
+ _gridModel.closeHeaderRow(content);
+ _gridModel.openDataRow(content);
+
+ //_gridModel.moveCursorToStart();
+ // prime the pump with the next item of data to render
+ if (_gridModel.hasNextDataItem()) // &&
!_gridModel.endDataSet())
+ {
+ _gridModel.nextDataItem();
+ _renderState = DATA_RENDER_STATE;
+ }
+ else
+ {
+ // todo: need to handle the "no-data" case here
+ _renderState = FOOTER_RENDER_STATE;
+ }
}
- else if(gridRenderState == DataGrid.GRID_RENDER_STATE)
+ else if (_renderState == DATA_RENDER_STATE)
{
- _grid.resetColumnModelIndex();
- StringBuffer content = new StringBuffer();
- if(_renderState == HEADER_RENDER_STATE)
+ _gridModel.closeDataRow(content);
+ if (_gridModel.hasNextDataItem()) // &&
!_gridModel.endDataSet())
{
- _gridModel.closeHeaderRow(content);
_gridModel.openDataRow(content);
-
- _gridModel.moveCursorToStart();
- // prime the pump with the next item of data to render
- if(_gridModel.hasNextDataItem() &&
!_gridModel.endDataSet())
- {
- _gridModel.nextDataItem();
- _renderState = DATA_RENDER_STATE;
- }
- else
- {
- // @todo: need to handle the "no-data" case here
- _renderState = FOOTER_RENDER_STATE;
- }
+ _gridModel.nextDataItem();
}
- else if(_renderState == DATA_RENDER_STATE)
+ else
{
- _gridModel.closeDataRow(content);
- if(_gridModel.hasNextDataItem() &&
!_gridModel.endDataSet())
+ if (_gridModel.shouldRenderFooter())
{
- _gridModel.openDataRow(content);
- _gridModel.nextDataItem();
+ _renderState = FOOTER_RENDER_STATE;
+ DataGridModel.openFooterRow(content);
}
- else
+ else
{
- if(_gridModel.shouldRenderFooter())
- {
- _renderState = FOOTER_RENDER_STATE;
- _gridModel.openFooterRow(content);
- }
- else
- {
- _renderState = -1;
- retVal = SKIP_BODY;
- }
+ _renderState = -1;
+ retVal = SKIP_BODY;
}
}
- else if(_renderState == FOOTER_RENDER_STATE)
- {
- _gridModel.closeFooterRow(content);
- _renderState = -1;
- retVal = SKIP_BODY;
- }
-
- _grid.appendContent(content.toString());
}
+ else if (_renderState == FOOTER_RENDER_STATE)
+ {
+ DataGridModel.closeFooterRow(content);
+ _renderState = -1;
+ retVal = SKIP_BODY;
+ }
+
+ _grid.appendContent(content.toString());
}
- else retVal = SKIP_BODY;
if(_logger.isDebugEnabled()) _logger.debug("render columns body with
state: " + _renderState);
return retVal;
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/DataGrid.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/DataGrid.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/DataGrid.java
Tue Jul 27 09:55:01 2004
@@ -18,31 +18,30 @@
*/
package org.apache.beehive.netui.tags.datagrid;
-// java imports
import java.util.List;
+import java.util.Iterator;
import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.JspException;
-// internal imports
import org.apache.beehive.netui.datagrid.model.ColumnModel;
import org.apache.beehive.netui.datagrid.model.DataGridModel;
import org.apache.beehive.netui.datagrid.model.impl.DefaultStylePolicy;
import org.apache.beehive.netui.datagrid.model.impl.EmptyStylePolicy;
import org.apache.beehive.netui.datagrid.model.impl.LegacyStylePolicy;
+import org.apache.beehive.netui.datagrid.util.PagedDataSet;
import org.apache.beehive.netui.tags.AbstractBaseTag;
import org.apache.beehive.netui.script.common.IDataAccessProvider;
+import org.apache.beehive.netui.script.common.DataAccessProviderStack;
import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
+import org.apache.beehive.netui.util.iterator.IteratorFactory;
/**
- * @todo: need to expose a ColumnIterator so that the "current" column can be
- * fetched by the child tags
+ * todo: need to expose a ColumnIterator so that the "current" column can be
fetched by the child tags
*
* @netui:tag name="dataGrid" description="Renders an HTML table containing a
data set"
- * @netui.tldx:tag whitespace="indent"
- * renderer="workshop.netui.jspdesigner.tldx.GridRenderer"
+ * @netui.tldx:tag whitespace="indent"
renderer="workshop.netui.jspdesigner.tldx.GridRenderer"
* netuiexpressioninfo=""
*/
public class DataGrid
@@ -57,22 +56,24 @@
public static final int START_RENDER_STATE = 10;
public static final int GRID_RENDER_STATE = 20;
public static final int END_RENDER_STATE = 30;
-
+
+ public static final String DEFAULT_STYLE_POLICY = "default";
+
private DataGridModel _gridModel = null;
- private JspWriter _out = null;
private String _name = null;
- private String _cssClassPolicy = "default";
-
- private int _renderType = JSP_TAG_RENDERING;
+ private String _cssClassPolicy = DEFAULT_STYLE_POLICY;
+ private String _dataSource = null;
+
private int _renderState = START_RENDER_STATE;
-
- private ColumnModel _currentColumn = null;
+
+ // todo: switch to StringBuilder or Writer / StringWriter
private StringBuffer _content = null;
private int _columnModelIndex = 0;
public DataGrid()
{
super();
+
_gridModel = new DataGridModel(this);
}
@@ -89,83 +90,84 @@
/**
* @netui:attribute required="false"
*/
- public void setCssClassPolicy(String cssClassPolicy)
- {
- _cssClassPolicy = cssClassPolicy;
- }
+ public void setCssClassPolicy(String cssClassPolicy) {_cssClassPolicy =
cssClassPolicy;}
public void setGroupDepth(int groupDepth)
{_gridModel.setGroupDepth(groupDepth);}
public int doStartTag()
+ throws JspException
{
- _out = pageContext.getOut();
_gridModel.setPageContext(pageContext);
_gridModel.setName(_name);
+ // String dataSource
+ String dataSource = getDataSource();
+ dataSource = "{" + dataSource + "}";
+
+ // ensure the dataSource is a valid expression
+ String validExpr = ensureValidExpression(dataSource, "dataSource",
"DataSourceError");
+ Object ds = evaluateExpression(validExpr, "dataSource");
+ Iterator iterator = IteratorFactory.createIterator(ds);
+ PagedDataSet dataSet = new PagedDataSet(dataSource, iterator);
+
+ _gridModel.setDataSet(dataSet);
+
if(_cssClassPolicy.equals("default"))
- // @todo: allocate and reuse for all grids
+ // todo: perf -- allocate and reuse for all grids
_gridModel.setCssPolicy(new DefaultStylePolicy());
else if(_cssClassPolicy.equals("none"))
_gridModel.setCssPolicy(new EmptyStylePolicy());
else if(_cssClassPolicy.equals("legacy"))
_gridModel.setCssPolicy(new LegacyStylePolicy());
- if(_renderType == JSP_TAG_RENDERING)
- {
- // @todo: implement state machine rendering here...
- _renderState = START_RENDER_STATE;
- _content = new StringBuffer();
- }
-
+ // todo: implement state machine rendering here...
+ _renderState = START_RENDER_STATE;
+ _content = new StringBuffer();
+
+ // todo: optimize -- this doesn't need to happen when the data set is
empty
+ DataAccessProviderStack.addDataAccessProvider(this, pageContext);
+
return EVAL_BODY_BUFFERED;
}
public int doAfterBody()
{
- if(_renderType == DATAGRID_MODEL_RENDERING)
- return SKIP_BODY;
- else
+ int retVal = EVAL_BODY_BUFFERED;
+ if (_renderState == START_RENDER_STATE)
{
- int retVal = EVAL_BODY_BUFFERED;
- if(_renderState == START_RENDER_STATE)
+ // print the column information
+ if (_logger.isDebugEnabled())
{
- // print the column information
- if(_logger.isDebugEnabled())
+ _logger.debug("registered columns:");
+ List columns = _gridModel.getColumns();
+ for (int i = 0; i < columns.size(); i++)
{
- _logger.debug("registered columns:");
- List columns = _gridModel.getColumns();
- for(int i = 0; i < columns.size(); i++)
- {
- _logger.debug("column[" + i + "]: " +
columns.get(i).getClass().getName());
- }
+ _logger.debug("column[" + i + "]: " +
columns.get(i).getClass().getName());
}
- _gridModel.initialize();
- _gridModel.renderPager(_content);
- _gridModel.openTable(_content);
-
- _renderState = GRID_RENDER_STATE;
}
- else if(_renderState == GRID_RENDER_STATE)
- {
- _gridModel.closeTable(_content);
- // @todo: need something like this to un-init the data set /
set the index to -1 / etc
- //_gridModel.destroy();
+ _gridModel.initialize();
+ _gridModel.renderPager(_content);
+ _gridModel.openTable(_content);
- _renderState = END_RENDER_STATE;
- retVal = SKIP_BODY;
- }
- else throw new RuntimeException("The DataGrid's render state '" +
_renderState + "' is invalid");
-
- return retVal;
+ _renderState = GRID_RENDER_STATE;
}
+ else if (_renderState == GRID_RENDER_STATE)
+ {
+ _gridModel.closeTable(_content);
+ // todo: need something like this to un-init the data set / set
the index to -1 / etc
+ //_gridModel.destroy();
+
+ _renderState = END_RENDER_STATE;
+ retVal = SKIP_BODY;
+ }
+ else throw new RuntimeException("The DataGrid's render state '" +
_renderState + "' is invalid");
+
+ return retVal;
}
public int doEndTag()
{
- if(_renderType == DATAGRID_MODEL_RENDERING)
- _gridModel.render(_out);
- else
- write(_content.toString());
+ write(_content.toString());
localRelease();
@@ -175,12 +177,10 @@
public void localRelease()
{
super.localRelease();
+
_gridModel = new DataGridModel(this);
- _out = null;
- _cssClassPolicy = "default";
- _currentColumn = null;
+ _cssClassPolicy = DEFAULT_STYLE_POLICY;
_renderState = START_RENDER_STATE;
- _renderType = JSP_TAG_RENDERING;
_columnModelIndex = 0;
_content = null;
_name = null;
@@ -222,18 +222,11 @@
return _renderState;
}
- public int getRenderType()
- {
- return _renderType;
- }
-
public void appendContent(String content)
{
if(_content == null)
_content = new StringBuffer();
- if(_logger.isDebugEnabled()) _logger.debug("adding content:::::\n" +
content.toString() + "\n:::::\n");
-
_content.append(content);
}
@@ -266,12 +259,12 @@
*/
public void setDataSource(String dataSource)
{
- _gridModel.setDataSource(dataSource);
+ _dataSource = dataSource;
}
public String getDataSource()
{
- return _gridModel.getDataSource();
+ return _dataSource;
}
public IDataAccessProvider getProviderParent()
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/ImageColumn.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/ImageColumn.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/ImageColumn.java
Tue Jul 27 09:55:01 2004
@@ -18,16 +18,10 @@
*/
package org.apache.beehive.netui.tags.datagrid;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.datagrid.model.impl.ImageColumnModel;
import org.apache.beehive.netui.datagrid.model.ColumnModel;
-import org.apache.beehive.netui.tags.AbstractBaseTag;
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
*
* @jsptagref.tagdescription
@@ -49,70 +43,64 @@
private static final Logger logger = Logger.getInstance(ImageColumn.class);
private ImageColumnModel _column;
+ private String _src = null;
+ private String _align = null;
+ private String _hspace = null;
+ private String _vspace = null;
+ private String _border = null;
+ private String _height = null;
+ private String _width = null;
/**
- * @jsptagref.attributedescription
- * The source of the image to display.
- *
+ * @jsptagref.attributedescription The source of the image to display.
* @jsptagref.databindable Read Only
- *
* @jsptagref.attributesyntaxvalue <i>literal_or_expression_src</i>
*
- * @netui:attribute required="true"
- * @netui.tldx:attribute language="netuiexpression"
+ * @netui:attribute required="true" rtexprvalue="true"
*/
- public void setSrc(String src)
{((ImageColumnModel)getColumnModel()).setSrc(src);}
+ public void setSrc(String src) {_src = src;}
/**
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setAlign(String align)
{((ImageColumnModel)getColumnModel()).setAlign(align);}
+ public void setAlign(String align) {_align = align;}
/**
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setHspace(String hspace)
{((ImageColumnModel)getColumnModel()).setHspace(hspace);}
+ public void setHspace(String hspace) {_hspace = hspace;}
/**
- * @jsptagref.attributedescription
- * Integer. The width of the border around the image.
- *
+ * @jsptagref.attributedescription Integer. The width of the border around
the image.
* @jsptagref.databindable false
- *
* @jsptagref.attributesyntaxvalue <i>integer_border</i>
*
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setVspace(String vspace)
{((ImageColumnModel)getColumnModel()).setVspace(vspace);}
+ public void setVspace(String vspace) {_vspace = vspace;}
/**
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setBorder(String border)
{((ImageColumnModel)getColumnModel()).setBorder(border);}
+ public void setBorder(String border) {_border = border;}
/**
- * @jsptagref.attributedescription
- * Integer. The height of the image to be displayed in pixels.
- *
+ * @jsptagref.attributedescription Integer. The height of the image to be
displayed in pixels.
* @jsptagref.databindable false
- *
* @jsptagref.attributesyntaxvalue <i>integer_height</i>
*
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setHeight(String height)
{((ImageColumnModel)getColumnModel()).setHeight(height);}
+ public void setHeight(String height) {_height = height;}
/**
- * @jsptagref.attributedescription
- * Integer. The width of the image to be displayed in pixels.
- *
+ * @jsptagref.attributedescription Integer. The width of the image to be
displayed in pixels.
* @jsptagref.databindable false
- *
* @jsptagref.attributesyntaxvalue <i>integer_width</i>
*
- * @netui:attribute required="false"
+ * @netui:attribute required="false" rtexprvalue="true"
*/
- public void setWidth(String width)
{((ImageColumnModel)getColumnModel()).setWidth(width);}
+ public void setWidth(String width) {_width = width;}
public String getTagName()
{
@@ -123,10 +111,29 @@
{
super.localRelease();
_column = null;
+ _src = null;
+ _border = null;
+ _height = null;
+ _width = null;
+ _hspace = null;
+ _vspace = null;
+ _align = null;
+ }
+
+ protected void applyAttributes()
+ {
+ _column.setSrc(_src);
+ _column.setBorder(_border);
+ _column.setHeight(_height);
+ _column.setWidth(_width);
+ _column.setHspace(_hspace);
+ _column.setVspace(_vspace);
+ _column.setAlign(_align);
}
protected void setColumnModel(ColumnModel column)
{
+ assert column instanceof ImageColumnModel;
_column = (ImageColumnModel)column;
}
@@ -137,3 +144,4 @@
else return _column;
}
}
+
Modified:
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/LiteralColumn.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/LiteralColumn.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-datagrid/org/apache/beehive/netui/tags/datagrid/LiteralColumn.java
Tue Jul 27 09:55:01 2004
@@ -18,16 +18,9 @@
*/
package org.apache.beehive.netui.tags.datagrid;
-// java imports
-import javax.servlet.jsp.JspException;
-
-// internal imports
import org.apache.beehive.netui.datagrid.model.ColumnModel;
-import org.apache.beehive.netui.tags.AbstractBaseTag;
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
*
* @netui:tag name="literalColumn" description="Renders a column of data in a
NetUI grid"
@@ -55,6 +48,7 @@
protected void setColumnModel(ColumnModel column)
{
+ assert column instanceof ColumnModel;
_column = column;
}
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/Controller.jpf
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/Controller.jpf
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/Controller.jpf
Tue Jul 27 09:55:01 2004
@@ -1,27 +1,33 @@
/*
+ * B E A S Y S T E M S
+ * Copyright 2002-2004 BEA Systems, Inc.
*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
*/
package databinding.datagrid.basic;
-// java imports
-
-// internal imports
import org.apache.beehive.netui.pageflow.Forward;
import org.apache.beehive.netui.pageflow.PageFlowController;
import org.apache.beehive.netui.pageflow.annotations.Jpf;
-// external imports
-
/**
*
*/
public class Controller
extends PageFlowController
{
- /**
- * @jpf:action
- * @jpf:forward name="success" path="index.jsp"
- */
@Jpf.Action(
forwards = {
@Jpf.Forward(
@@ -29,21 +35,6 @@
path = "index.jsp")
})
public Forward begin()
- {
- return new Forward("success");
- }
-
- /**
- * @jpf:action
- * @jpf:forward name="success" path="actionTest.jsp"
- */
- @Jpf.Action(
- forwards = {
- @Jpf.Forward(
- name = "success",
- path = "actionTest.jsp")
- })
- public Forward postback()
{
return new Forward("success");
}
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/index.jsp
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/index.jsp
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/basic/index.jsp
Tue Jul 27 09:55:01 2004
@@ -3,26 +3,23 @@
<%@ taglib uri="beehive-netui-tags-databinding.tld" prefix="netui-data"%>
<%@ taglib uri="beehive-netui-tags-template.tld" prefix="netui-template"%>
<%@ taglib uri="beehive-netui-tags-datagrid.tld" prefix="netui-datagrid"%>
+<%@ page
import="org.apache.beehive.netui.script.common.DataAccessProviderBean"%>
<netui-template:template templatePage="../site/template.jsp">
<netui-template:setAttribute name="title" value="Basic Data Grid"/>
<netui-template:section name="body">
<p>
<%@ include file="../util/portfolioXmlBean.jsp" %>
<br/>
-<br/>
<netui-datagrid:dataGrid dataSource="pageContext.stocks" name="portfolio">
<netui-datagrid:columns defaultSortable="true" defaultFilterable="false"
sortAction="index.jsp" filterAction="index.jsp">
<netui-datagrid:literalColumn headerText="Symbol"
value="${container.item.symbol}" sortExpression="symbol"/>
- <netui-datagrid:anchorColumn headerText="Web"
href="${container.item.web}" value="${container.item.name}"
sortExpression="web">
- <netui-datagrid:parameter name="rowid" value="${container.index}"/>
- <netui-datagrid:parameter name="symbol"
value="${container.item.symbol}"/>
+ <netui-datagrid:literalColumn sortable="false" headerText="Price"
value="${container.item.price}"/>
+ <netui-datagrid:anchorColumn headerText="Web"
href="${container.item.web}" value="${container.item.name}">
+ <netui:parameter name="rowid" value="${container.index}"/>
+ <netui:parameter name="symbol" value="${container.item.symbol}"/>
</netui-datagrid:anchorColumn>
- <netui-datagrid:literalColumn sortable="false" headerText="Price"
value="${container.item.price}">
- <netui:formatNumber pattern="$#,###,###.00" type="currency"/>
- </netui-datagrid:literalColumn>
</netui-datagrid:columns>
</netui-datagrid:dataGrid>
-<br/>
<br/>
<netui:anchor href="index.jsp">Reset</netui:anchor>
<br/>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/util/portfolioXmlBean.jsp
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/util/portfolioXmlBean.jsp
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/util/portfolioXmlBean.jsp
Tue Jul 27 09:55:01 2004
@@ -1,8 +1,6 @@
-
<%--
- Create a portfolio XMLBean in pageContext.stocks
+ Create a portfolio XMLBean in pageContext.stocks.
--%>
-
<%
try
{
@@ -14,4 +12,4 @@
{
out.write("exception: " + e.toString());
}
-%>
+%>