Author: ekoneil Date: Sat Feb 19 21:26:48 2005 New Revision: 154474 URL: http://svn.apache.org/viewcvs?view=rev&rev=154474 Log: Addition of a DataGridConfig object.
The DataGridConfig object is used throughout the data grid's tag and model classes to provide configuration information and factory support. This allows a grid, set of grids, or entire site to share a common infrastructure for configuring grids. There is one JSP tag API change here. The "cssClassPrefix" attribute on <netui-data:dataGrid> has changed to "styleClassPrefix" for consistency. Also, the DataGridState and DataGridResourceProvider classes have moved into the api/ directory. BB: self DRT: NetUI pass BVT: NetUI pass Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java (with props) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfigFactory.java (with props) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridResourceProvider.java - copied, changed from r154467, incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/DataGridResourceProvider.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java - copied, changed from r154467, incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridState.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridConfig.java - copied, changed from r154456, incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridFactory.java Removed: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridFactory.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridState.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridFactory.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/DataGridResourceProvider.java Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/DataGridTagModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/PagerCodec.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/SortCodec.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageAnchorCellModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageCellModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/SpanCellModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/TemplateCellModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/AnchorCellDecorator.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageAnchorCellDecorator.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageCellDecorator.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SpanCellDecorator.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/table/TableRenderer.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/FilterUtil.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/PagedDataSet.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractCell.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Caption.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGridUtil.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Footer.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Header.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/RenderPager.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/DataGridTestUtil.java incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/customHeaderStyle.jsp incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/helloHeaderDecorator.jsp incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/stylePrefix.jsp Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java?view=auto&rev=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java (added) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java Sat Feb 19 21:26:48 2005 @@ -0,0 +1,55 @@ +/* + * Copyright 2004 The Apache Software Foundation. + * + * 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.databinding.datagrid.api; + +import java.util.List; + +import org.apache.beehive.netui.databinding.datagrid.api.sort.Sort; +import org.apache.beehive.netui.databinding.datagrid.api.sort.SortModel; +import org.apache.beehive.netui.databinding.datagrid.api.filter.Filter; +import org.apache.beehive.netui.databinding.datagrid.api.filter.FilterModel; +import org.apache.beehive.netui.databinding.datagrid.api.pager.PagerModel; +import org.apache.beehive.netui.databinding.datagrid.api.rendering.PagerRenderer; +import org.apache.beehive.netui.databinding.datagrid.api.rendering.StyleModel; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridState; + +/** + * + */ +public abstract class DataGridConfig { + + public abstract DataGridState createDataGridState(); + + public abstract Sort createSort(); + + public abstract SortModel createSortModel(List<Sort> sorts); + + public abstract Filter createFilter(); + + public abstract FilterModel createFilterModel(List<Filter> filters); + + public abstract PagerModel createPagerModel(); + + public abstract DataGridResourceProvider getDefaultResourceProvider(); + + public abstract DataGridResourceProvider getResourceProvider(String resourceBundle); + + public abstract StyleModel getStyleModel(String name, String classPrefix); + + public abstract PagerRenderer getDefaultPagerRenderer(); +} Propchange: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfigFactory.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfigFactory.java?view=auto&rev=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfigFactory.java (added) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfigFactory.java Sat Feb 19 21:26:48 2005 @@ -0,0 +1,38 @@ +/* + * Copyright 2004 The Apache Software Foundation. + * + * 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.databinding.datagrid.api; + +import org.apache.beehive.netui.databinding.datagrid.runtime.DefaultDataGridConfig; + + +/** + * + */ +public class DataGridConfigFactory { + + private DataGridConfigFactory() { + } + + public static final DataGridConfig getInstance() { + return new DefaultDataGridConfig(); + } + + public static final DataGridConfig getInstance(Class clazz) { + throw new UnsupportedOperationException("NYI"); + } +} Propchange: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfigFactory.java ------------------------------------------------------------------------------ svn:eol-style = native Copied: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridResourceProvider.java (from r154467, incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/DataGridResourceProvider.java) URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridResourceProvider.java?view=diff&rev=154474&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/DataGridResourceProvider.java&r1=154467&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridResourceProvider.java&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/DataGridResourceProvider.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridResourceProvider.java Sat Feb 19 21:26:48 2005 @@ -15,14 +15,12 @@ * * $Header:$ */ -package org.apache.beehive.netui.databinding.datagrid.runtime.util; +package org.apache.beehive.netui.databinding.datagrid.api; import java.text.MessageFormat; import java.util.ResourceBundle; import java.util.Locale; -import java.util.Map; import java.util.HashMap; -import java.util.Collections; import java.util.Enumeration; /** @@ -30,21 +28,17 @@ */ public class DataGridResourceProvider { - private String DEFAULT_RESOURCE_BUNDLE = "org.apache.beehive.netui.databinding.datagrid.runtime.util.data-grid-default"; private static final Object VALUE_PLACEHOLDER = new Object(); + private static final String DEFAULT_RESOURCE_BUNDLE = "org.apache.beehive.netui.databinding.datagrid.runtime.util.data-grid-default"; private boolean _enableChaining = false; private String _resourceBundlePath = null; private ResourceBundle _defaultResourceBundle = null; private ResourceBundle _resourceBundle = null; - private HashMap<String, String> _resourceOverrides = null; private HashMap _resourceBundleKeys = null; private Locale _locale = null; - public DataGridResourceProvider() { - } - public boolean isEnableChaining() { return _enableChaining; } @@ -69,21 +63,6 @@ return _resourceBundlePath; } - public void addResourceOverride(String key, String value) { - assert key != null; - assert value != null; - - if(_resourceOverrides == null) - _resourceOverrides = new HashMap<String, String>(); - - /* todo: could consider asserting that this key is known by the data grid framework */ - _resourceOverrides.put(key, value); - } - - public Map getResourceOverrides() { - return Collections.unmodifiableMap(_resourceOverrides); - } - public String getMessage(String key) { assert key != null; @@ -112,28 +91,22 @@ _resourceBundleKeys.put(e.nextElement(), VALUE_PLACEHOLDER); } - /* todo: implement chaining here */ - if(_resourceOverrides != null && _resourceOverrides.containsKey(key)) - return _resourceOverrides.get(key); - else { - if(!_enableChaining || _resourceBundleKeys.containsKey(key)) - return _resourceBundle.getString(key); - else - return _defaultResourceBundle.getString(key); - } + if(!_enableChaining || _resourceBundleKeys.containsKey(key)) + return _resourceBundle.getString(key); + else return _defaultResourceBundle.getString(key); } } + protected String internalFormatMessage(String pattern, Object[] args) { + MessageFormat format = new MessageFormat(pattern); + String msg = format.format(args).toString(); + return msg; + } + private String getDefaultMessage(String key) { if(_defaultResourceBundle == null) _defaultResourceBundle = createResourceBundle(DEFAULT_RESOURCE_BUNDLE); return _defaultResourceBundle.getString(key); - } - - private final String internalFormatMessage(String pattern, Object[] args) { - MessageFormat format = new MessageFormat(pattern); - String msg = format.format(args).toString(); - return msg; } private ResourceBundle createResourceBundle(String path) { Copied: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java (from r154467, incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridState.java) URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java?view=diff&rev=154474&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridState.java&r1=154467&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridState.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java Sat Feb 19 21:26:48 2005 @@ -15,7 +15,7 @@ * * $Header:$ */ -package org.apache.beehive.netui.databinding.datagrid.runtime; +package org.apache.beehive.netui.databinding.datagrid.api; import org.apache.beehive.netui.databinding.datagrid.api.filter.FilterModel; import org.apache.beehive.netui.databinding.datagrid.api.sort.SortModel; Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/DataGridTagModel.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/DataGridTagModel.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/DataGridTagModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/DataGridTagModel.java Sat Feb 19 21:26:48 2005 @@ -18,19 +18,19 @@ package org.apache.beehive.netui.databinding.datagrid.api.rendering; import java.util.Map; +import java.util.HashMap; import javax.servlet.jsp.JspContext; import javax.servlet.http.HttpServletRequest; -import org.apache.beehive.netui.databinding.datagrid.api.rendering.IDataGridMessageKeys; import org.apache.beehive.netui.databinding.datagrid.api.sort.SortModel; import org.apache.beehive.netui.databinding.datagrid.api.sort.SortDirection; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfig; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridResourceProvider; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridState; import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.table.TableRenderer; import org.apache.beehive.netui.databinding.datagrid.runtime.DataGridURLService; -import org.apache.beehive.netui.databinding.datagrid.runtime.DataGridState; -import org.apache.beehive.netui.databinding.datagrid.runtime.DataGridFactory; import org.apache.beehive.netui.databinding.datagrid.runtime.util.PagedDataSet; import org.apache.beehive.netui.databinding.datagrid.runtime.util.JspUtil; -import org.apache.beehive.netui.databinding.datagrid.runtime.util.DataGridResourceProvider; import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; /** @@ -42,42 +42,40 @@ todo: refactor. need a DataGridURL type that hides URL keys / creation. */ - public static final int START_RENDER_STATE = 10; - public static final int CAPTION_RENDER_STATE = 20; - public static final int GRID_RENDER_STATE = 30; - public static final int FOOTER_RENDER_STATE = 40; - public static final int END_RENDER_STATE = 50; + public static final int RENDER_STATE_START = 10; + public static final int RENDER_STATE_CAPTION = 20; + public static final int RENDER_STATE_GRID = 30; + public static final int RENDER_STATE_FOOTER = 40; + public static final int RENDER_STATE_END = 50; + private static final int RENDER_STATE_UNINIT = -1; - private int _renderState = START_RENDER_STATE; + private JspContext _jspContext = null; + private HttpServletRequest _request = null; + private DataGridURLService _dgss = null; + + private int _renderState = RENDER_STATE_UNINIT; private boolean _disableDefaultPagerRendering = false; private String _name = null; - private StyleModel _styleModel = null; private PagerRenderer _pagerRenderer = null; private PagedDataSet _dataSet = null; private TableRenderer _tableRenderer = null; - private DataGridURLService _dgss = null; private DataGridResourceProvider _resourceProvider = null; private DataGridState _dataGridState = null; - private DataGridFactory _dataGridFactory; - - private JspContext _jspContext = null; - private HttpServletRequest _request = null; + private DataGridConfig _dataGridConfig; - public DataGridTagModel(JspContext jspContext, String name, PagedDataSet dataSet, DataGridFactory factory) { + public DataGridTagModel(String name, DataGridConfig dataGridConfig, JspContext jspContext) { super(); /* todo: refactor. this assembly could should be externalized */ - _name = name; - _jspContext = jspContext; - _dataSet = dataSet; - _dataGridFactory = factory; _dgss = DataGridURLService.getInstance(jspContext); - _dataGridState = _dgss.getDataGridState(name); - _dataGridState.getPagerModel().setDataSetSize(_dataSet.getSize()); - _resourceProvider = factory.getResourceProvider(); - _resourceProvider.setLocale(JspUtil.getLocale(jspContext)); + _jspContext = jspContext; _request = JspUtil.getRequest(_jspContext); + + _name = name; + _dataGridConfig = dataGridConfig; + + wireup(); } public String getName() { @@ -92,31 +90,60 @@ return _renderState; } - public void setRenderState(int renderState) { - /* todo: need to assert that the correct transitions are being made */ - _renderState = renderState; + public void changeRenderState(int renderState) { + switch(_renderState) { + case RENDER_STATE_UNINIT: + _renderState = RENDER_STATE_START; + break; + case RENDER_STATE_START: + _renderState = RENDER_STATE_CAPTION; + break; + case RENDER_STATE_CAPTION: + _renderState = RENDER_STATE_GRID; + break; + case RENDER_STATE_GRID: + _renderState = RENDER_STATE_FOOTER; + break; + case RENDER_STATE_FOOTER: + _renderState = RENDER_STATE_END; + break; + default: + throw new IllegalStateException("Unable to make the specified render state transition"); + } + + return; } public PagedDataSet getDataSet() { return _dataSet; } + /* todo: would be nice to address this side-effect outside of the setter */ public void setDataSet(PagedDataSet dataSet) { _dataSet = dataSet; + _dataGridState.getPagerModel().setDataSetSize(_dataSet.getSize()); } public PagerRenderer getPagerRenderer() { - if(_pagerRenderer == null) { - _pagerRenderer = _dataGridFactory.getDefaultPagerRenderer(); - _pagerRenderer.setDataGridTagModel(this); - } + if(_pagerRenderer == null) + setPagerRenderer(_dataGridConfig.getDefaultPagerRenderer()); return _pagerRenderer; } + /* todo: would be nice to address this side-effect outside of the setter */ public void setPagerRenderer(PagerRenderer pagerRenderer) { - pagerRenderer.setDataGridTagModel(this); + assert pagerRenderer != null : "Received a null pager renderer"; _pagerRenderer = pagerRenderer; + _pagerRenderer.setDataGridTagModel(this); + } + + public DataGridResourceProvider getResourceProvider() { + return _resourceProvider; + } + + public void setResourceProvider(DataGridResourceProvider resourceProvider) { + _resourceProvider = resourceProvider; } public boolean isDisableDefaultPagerRendering() { @@ -139,35 +166,41 @@ return _styleModel; } - public void setStyleModel(StyleModel cssModel) { - _styleModel = cssModel; - } - - public String getResourcePath() { - /* todo: not sure that this is right in all cases -- probably need to provide the ability to override the path from the JSP */ - return _request.getContextPath() + "/" + getMessage(IDataGridMessageKeys.DATAGRID_RESOURCE_PATH); - } - - public String getResourceBundlePath() { - return _resourceProvider.getResourceBundlePath(); - } - - public void setResourceBundlePath(String resourceBundlePath) { - _resourceProvider.setResourceBundlePath(resourceBundlePath); + public void setStyleModel(StyleModel styleModel) { + _styleModel = styleModel; } public String getMessage(String key) { + assert _resourceProvider != null : "Received a null resource provider"; return _resourceProvider.getMessage(key); } public String formatMessage(String key, Object[] args) { + assert _resourceProvider != null : "Received a null resource provider"; return _resourceProvider.formatMessage(key, args); } public void addResourceOverride(String key, String value) { - _resourceProvider.addResourceOverride(key, value); + OverridableDataGridResourceProvider overrideResourceProvider = null; + if(!(_resourceProvider instanceof OverridableDataGridResourceProvider)) { + overrideResourceProvider = new OverridableDataGridResourceProvider(_resourceProvider); + } + else { + assert _resourceProvider instanceof OverridableDataGridResourceProvider; + overrideResourceProvider = (OverridableDataGridResourceProvider)_resourceProvider; + } + + overrideResourceProvider.addResourceOverride(key, value); + } + + /* todo: move to the DataGridConfig object */ + public String getResourcePath() { + assert _request != null : "Received a null request"; + /* todo: not sure that this is right in all cases -- probably need to provide the ability to override the path from the JSP */ + return _request.getContextPath() + "/" + getMessage(IDataGridMessageKeys.DATAGRID_RESOURCE_PATH); } + /* todo: move to the DataGridConfig object */ public String getSortImagePath(SortDirection sortDirection) { if(sortDirection == SortDirection.ASCENDING) return getMessage(IDataGridMessageKeys.SORT_ASC_IMAGE_PATH); @@ -179,6 +212,7 @@ } } + /* todo: move to the DataGridConfig object */ public String getDefaultSortImagePath() { return getMessage(IDataGridMessageKeys.SORT_NONE_IMAGE_PATH); } @@ -260,7 +294,56 @@ return _dataSet.hasNext(); } - private Map buildSortQueryParamsMap(String sortExpression, SortDirection sortDirection) { + /* ------------------------------------------------------------- + + Implementation specifics + + ------------------------------------------------------------- */ + + private final Map buildSortQueryParamsMap(String sortExpression, SortDirection sortDirection) { return _dgss.buildSortQueryParamsMap(_name, sortExpression, sortDirection); + } + + private final void wireup() { + _dataGridState = _dgss.getDataGridState(_name, _dataGridConfig); + } + + private final class OverridableDataGridResourceProvider + extends DataGridResourceProvider { + + private DataGridResourceProvider _delegate = null; + private HashMap<String, String> _resourceOverrides = null; + + private OverridableDataGridResourceProvider(DataGridResourceProvider resourceProvider) { + _delegate = resourceProvider; + } + + private void addResourceOverride(String key, String value) { + if(_resourceOverrides == null) + _resourceOverrides = new HashMap<String, String>(); + + /* todo: could consider asserting that this key is known by the data grid framework */ + _resourceOverrides.put(key, value); + } + + public String getMessage(String key) { + String msg = internalGetMessage(key); + if(msg != null) + return msg; + else return _delegate.getMessage(key); + } + + public String formatMessage(String key, Object[] args) { + String pattern = internalGetMessage(key); + if(pattern != null) + return internalFormatMessage(pattern, args); + else return _delegate.formatMessage(key, args); + } + + private final String internalGetMessage(String key) { + if(_resourceOverrides != null && _resourceOverrides.containsKey(key)) + return _resourceOverrides.get(key); + else return null; + } } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java Sat Feb 19 21:26:48 2005 @@ -30,6 +30,9 @@ import org.apache.beehive.netui.databinding.datagrid.api.sort.SortDirection; import org.apache.beehive.netui.databinding.datagrid.api.filter.Filter; import org.apache.beehive.netui.databinding.datagrid.api.pager.PagerModel; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfigFactory; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfig; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridState; import org.apache.beehive.netui.databinding.datagrid.runtime.codec.SortCodec; import org.apache.beehive.netui.databinding.datagrid.runtime.codec.FilterCodec; import org.apache.beehive.netui.databinding.datagrid.runtime.codec.PagerCodec; @@ -44,7 +47,7 @@ * The DataGridStateService is scoped to a single ServletRequest and is * able to cache the ServletRequest object itself. */ -public class DataGridURLService { +public final class DataGridURLService { /* todo: this class isn't right yet... @@ -58,6 +61,7 @@ private static final String KEY = DataGridURLService.class.getName() + "REQUEST_KEY"; private static final String EMPTY_STRING = ""; + private static final DataGridConfig DEFAULT_DATA_GRID_CONFIG = DataGridConfigFactory.getInstance(); public static DataGridURLService getInstance(JspContext jspContext) { assert jspContext instanceof PageContext; @@ -106,18 +110,19 @@ } public DataGridState getDataGridState(String name) { - /* todo: refactor. this factory needs to be externally configured; need a way to do this... */ - DataGridFactory factory = DataGridFactory.getInstance(); + return getDataGridState(name, DEFAULT_DATA_GRID_CONFIG); + } + public DataGridState getDataGridState(String name, DataGridConfig dataGridConfig) { if(name == null || name.equals("")) throw new IllegalArgumentException("Unable to create data grid state for invalid name: " + name); DataGridState dgs = _state.get(name); if(dgs == null) { - dgs = factory.createDataGridState(); + dgs = dataGridConfig.createDataGridState(); dgs.setPagerModel(getPagerModel(name)); - dgs.setFilterModel(factory.createFilterModel(getFilters(name))); - dgs.setSortModel(factory.createSortModel(getSorts(name))); + dgs.setFilterModel(dataGridConfig.createFilterModel(getFilters(name))); + dgs.setSortModel(dataGridConfig.createSortModel(getSorts(name))); _state.put(name, dgs); } Copied: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridConfig.java (from r154456, incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridFactory.java) URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridConfig.java?view=diff&rev=154474&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridFactory.java&r1=154456&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridConfig.java&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridFactory.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DefaultDataGridConfig.java Sat Feb 19 21:26:48 2005 @@ -25,14 +25,24 @@ import org.apache.beehive.netui.databinding.datagrid.api.filter.FilterModel; import org.apache.beehive.netui.databinding.datagrid.api.pager.PagerModel; import org.apache.beehive.netui.databinding.datagrid.api.rendering.PagerRenderer; +import org.apache.beehive.netui.databinding.datagrid.api.rendering.StyleModel; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfig; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridResourceProvider; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridState; import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.pager.PreviousNextPagerRenderer; -import org.apache.beehive.netui.databinding.datagrid.runtime.util.DataGridResourceProvider; +import org.apache.beehive.netui.databinding.datagrid.runtime.model.style.DefaultStyleModel; +import org.apache.beehive.netui.databinding.datagrid.runtime.model.style.EmptyStyleModel; /** * */ -public class DefaultDataGridFactory - extends DataGridFactory { +public class DefaultDataGridConfig + extends DataGridConfig { + + private static final StyleModel DEFAULT_STYLE_POLICY = new DefaultStyleModel("datagrid"); + private static final StyleModel EMPTY_STYLE_POLICY = new EmptyStyleModel(); + private static final String EMPTY_STYLE_POLICY_NAME = "empty"; + private static final String DEFAULT_STYLE_POLICY_NAME = "default"; public DataGridState createDataGridState() { return new DataGridState(); @@ -62,7 +72,24 @@ return new PreviousNextPagerRenderer(); } - public DataGridResourceProvider getResourceProvider() { + public DataGridResourceProvider getDefaultResourceProvider() { return new DataGridResourceProvider(); + } + + public DataGridResourceProvider getResourceProvider(String resourceBundle) { + DataGridResourceProvider resourceProvider = new DataGridResourceProvider(); + resourceProvider.setResourceBundlePath(resourceBundle); + return resourceProvider; + } + + public StyleModel getStyleModel(String name, String classPrefix) { + if(name == null || name.equals(DEFAULT_STYLE_POLICY_NAME)) { + if(classPrefix != null) + return new DefaultStyleModel(classPrefix); + else + return DEFAULT_STYLE_POLICY; + } else if(name != null && name.equals(EMPTY_STYLE_POLICY_NAME)) + return EMPTY_STYLE_POLICY; + else return DEFAULT_STYLE_POLICY; } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/PagerCodec.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/PagerCodec.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/PagerCodec.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/PagerCodec.java Sat Feb 19 21:26:48 2005 @@ -26,7 +26,7 @@ /** * */ -public class PagerCodec { +public final class PagerCodec { private static final Logger LOGGER = Logger.getInstance(PagerCodec.class); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/SortCodec.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/SortCodec.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/SortCodec.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/codec/SortCodec.java Sat Feb 19 21:26:48 2005 @@ -28,7 +28,7 @@ /** * */ -public class SortCodec { +public final class SortCodec { /* Default sort syntax: netui_sort=<gridNamespace>~[+|-]<expr> */ Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageAnchorCellModel.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageAnchorCellModel.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageAnchorCellModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageAnchorCellModel.java Sat Feb 19 21:26:48 2005 @@ -23,7 +23,7 @@ /** * */ -public class ImageAnchorCellModel +public final class ImageAnchorCellModel extends AnchorCellModel { private ImageTag.State _imageState = null; Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageCellModel.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageCellModel.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageCellModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/ImageCellModel.java Sat Feb 19 21:26:48 2005 @@ -24,7 +24,7 @@ /** * */ -public class ImageCellModel +public final class ImageCellModel extends CellModel { private ImageTag.State _imageState = null; Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/SpanCellModel.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/SpanCellModel.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/SpanCellModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/SpanCellModel.java Sat Feb 19 21:26:48 2005 @@ -24,7 +24,7 @@ /** * */ -public class SpanCellModel +public final class SpanCellModel extends CellModel { private static final SpanTag.State DEFAULT_SPAN_STATE = new SpanTag.State(); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/TemplateCellModel.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/TemplateCellModel.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/TemplateCellModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/model/cell/TemplateCellModel.java Sat Feb 19 21:26:48 2005 @@ -22,6 +22,6 @@ /** * */ -public class TemplateCellModel +public final class TemplateCellModel extends CellModel { } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/AnchorCellDecorator.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/AnchorCellDecorator.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/AnchorCellDecorator.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/AnchorCellDecorator.java Sat Feb 19 21:26:48 2005 @@ -37,7 +37,7 @@ /** * */ -public class AnchorCellDecorator +public final class AnchorCellDecorator extends CellDecorator { private static final Logger LOGGER = Logger.getInstance(AnchorCellDecorator.class); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageAnchorCellDecorator.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageAnchorCellDecorator.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageAnchorCellDecorator.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageAnchorCellDecorator.java Sat Feb 19 21:26:48 2005 @@ -36,7 +36,7 @@ /** */ -public class ImageAnchorCellDecorator +public final class ImageAnchorCellDecorator extends CellDecorator { private static final Logger LOGGER = Logger.getInstance(ImageAnchorCellDecorator.class); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageCellDecorator.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageCellDecorator.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageCellDecorator.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/ImageCellDecorator.java Sat Feb 19 21:26:48 2005 @@ -31,7 +31,7 @@ /** * */ -public class ImageCellDecorator +public final class ImageCellDecorator extends CellDecorator { public void decorate(JspContext jspContext, AbstractRenderAppender appender, CellModel cellModel) Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java Sat Feb 19 21:26:48 2005 @@ -42,7 +42,7 @@ /** * */ -public class SortedCellDecorator +public final class SortedCellDecorator extends CellDecorator { private static final Logger LOGGER = Logger.getInstance(SortedCellDecorator.class); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SpanCellDecorator.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SpanCellDecorator.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SpanCellDecorator.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SpanCellDecorator.java Sat Feb 19 21:26:48 2005 @@ -31,7 +31,7 @@ /** * */ -public class SpanCellDecorator +public final class SpanCellDecorator extends CellDecorator { public void decorate(JspContext jspContext, AbstractRenderAppender appender, CellModel cellModel) Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java Sat Feb 19 21:26:48 2005 @@ -24,7 +24,7 @@ /** * */ -public class FirstPreviousNextLastPagerRenderer +public final class FirstPreviousNextLastPagerRenderer extends PagerRenderer { protected String internalRender() { Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java Sat Feb 19 21:26:48 2005 @@ -21,7 +21,7 @@ import org.apache.beehive.netui.databinding.datagrid.api.rendering.IDataGridMessageKeys; import org.apache.beehive.netui.databinding.datagrid.api.rendering.PagerRenderer; -public class PreviousNextPagerRenderer +public final class PreviousNextPagerRenderer extends PagerRenderer { protected String internalRender() { Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/table/TableRenderer.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/table/TableRenderer.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/table/TableRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/table/TableRenderer.java Sat Feb 19 21:26:48 2005 @@ -32,7 +32,7 @@ /** * */ -public class TableRenderer { +public final class TableRenderer { private static final CaptionTag.State CAPTION_STATE = new CaptionTag.State(); private static final THeadTag.State THEAD_STATE = new THeadTag.State(); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java Sat Feb 19 21:26:48 2005 @@ -32,7 +32,7 @@ /** * @netui:jspfunctions */ -public class SQLSupport { +public final class SQLSupport { private static final String EMPTY_STRING = ""; private static final FilterOperation[] FILTER_OPERATIONS; @@ -60,6 +60,7 @@ private static final FilterOperation STRING_FILTER_OPERATION = FILTER_OPERATIONS[9]; private static final FilterOperation OTHER_FILTER_OPERATION = FILTER_OPERATIONS[1]; + /* do not construct */ private SQLSupport() { } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/FilterUtil.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/FilterUtil.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/FilterUtil.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/FilterUtil.java Sat Feb 19 21:26:48 2005 @@ -26,7 +26,7 @@ /** * @netui:jspfunctions */ -public class FilterUtil { +public final class FilterUtil { private static final List<Filter> DEFAULT_FILTER_LIST; private static final Filter DEFAULT_FILTER = new Filter(); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/JspUtil.java Sat Feb 19 21:26:48 2005 @@ -31,7 +31,7 @@ import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils; import org.apache.beehive.netui.tags.internal.PageFlowTagUtils; -public class JspUtil { +public final class JspUtil { /* do not construct */ private JspUtil() { Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/PagedDataSet.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/PagedDataSet.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/PagedDataSet.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/util/PagedDataSet.java Sat Feb 19 21:26:48 2005 @@ -26,7 +26,7 @@ /** * */ -public class PagedDataSet +public final class PagedDataSet implements Iterator { private static final Logger LOGGER = Logger.getInstance(PagedDataSet.class); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractCell.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractCell.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractCell.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractCell.java Sat Feb 19 21:26:48 2005 @@ -64,8 +64,8 @@ int gridRenderState = dataGridModel.getRenderState(); - /* START_RENDER_STATE is a no-op for columns */ - if(gridRenderState == DataGridTagModel.START_RENDER_STATE) { + /* RENDER_STATE_START is a no-op for columns */ + if(gridRenderState == DataGridTagModel.RENDER_STATE_START) { return; } // otherwise, the ColumnModel associated with this tag Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Caption.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Caption.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Caption.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Caption.java Sat Feb 19 21:26:48 2005 @@ -238,7 +238,7 @@ if(dgm == null) throw new JspException("Unable to find a dataGridModel in the JspContext"); - if(dgm.getRenderState() == DataGridTagModel.CAPTION_RENDER_STATE) { + if(dgm.getRenderState() == DataGridTagModel.RENDER_STATE_CAPTION) { JspFragment fragment = getJspBody(); if(fragment != null) { StringWriter sw = new StringWriter(); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java Sat Feb 19 21:26:48 2005 @@ -21,19 +21,20 @@ import java.io.IOException; import java.io.StringWriter; import javax.servlet.jsp.JspException; -import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.JspContext; import javax.servlet.jsp.tagext.SimpleTagSupport; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.http.HttpServletRequest; import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; import org.apache.beehive.netui.databinding.datagrid.api.rendering.StyleModel; -import org.apache.beehive.netui.databinding.datagrid.runtime.model.style.DefaultStyleModel; -import org.apache.beehive.netui.databinding.datagrid.runtime.model.style.EmptyStyleModel; +import org.apache.beehive.netui.databinding.datagrid.api.pager.PagerModel; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfigFactory; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfig; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridResourceProvider; import org.apache.beehive.netui.databinding.datagrid.runtime.util.PagedDataSet; +import org.apache.beehive.netui.databinding.datagrid.runtime.util.JspUtil; import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.table.TableRenderer; -import org.apache.beehive.netui.databinding.datagrid.api.pager.PagerModel; -import org.apache.beehive.netui.databinding.datagrid.runtime.DataGridFactory; import org.apache.beehive.netui.script.common.IDataAccessProvider; import org.apache.beehive.netui.script.common.DataAccessProviderStack; import org.apache.beehive.netui.tags.ExpressionHandling; @@ -55,16 +56,12 @@ private static final String FACET_RESOURCE = "resource"; - private static final StyleModel DEFAULT_STYLE_POLICY = new DefaultStyleModel("datagrid"); - private static final StyleModel EMPTY_STYLE_POLICY = new EmptyStyleModel(); - private static final String EMPTY_STYLE_POLICY_NAME = "empty"; - private static final String DEFAULT_STYLE_POLICY_NAME = "default"; - private String _name = null; private String _styleClassPrefix = null; private String _stylePolicyName = null; private String _dataSource = null; private String _resourceBundlePath = null; + private DataGridConfig _dataGridConfig = null; private DataGridTagModel _gridTagModel = null; public String getTagName() { @@ -72,6 +69,13 @@ } /** + * @netui:attribute required="false" rtexprvalue="true" + */ + public void setDataGridConfig(DataGridConfig dataGridConfig) { + _dataGridConfig = dataGridConfig; + } + + /** * @netui:attribute required="true" */ public void setName(String name) { @@ -89,8 +93,8 @@ /** * @netui:attribute required="false" rtexprvalue="true" */ - public void setCssClassPrefix(String cssClassPrefix) { - _styleClassPrefix = cssClassPrefix; + public void setStyleClassPrefix(String styleClassPrefix) { + _styleClassPrefix = styleClassPrefix; } /** @@ -102,13 +106,12 @@ /** * @netui:attribute required="false" rtexprvalue="true" - */ + */ public void setStyleClassPolicy(String stylePolicy) { _stylePolicyName = stylePolicy; } /** - * * @param name * @param value * @param facet @@ -116,119 +119,123 @@ */ public void setAttribute(String name, String value, String facet) throws JspException { - if(facet.equals(FACET_RESOURCE)) { _gridTagModel.addResourceOverride(name, value); - } - else { + } else { String s = Bundle.getString("Tags_AttributeFacetNotSupported", new Object[]{facet}); throw new JspException(s); } } - /* todo: should this be wrapped in try / finally so that the PageContext gets cleaned up correctly? */ public void doTag() throws JspException, IOException { - StyleModel styleModel = null; - JspFragment fragment = getJspBody(); - String dataSource = getDataSource(); - HttpServletRequest request = (HttpServletRequest)((PageContext)getJspContext()).getRequest(); - TableRenderer tableRenderer = new TableRenderer(request); - // ensure the dataSource is a valid expression + String dataSource = getDataSource(); ExpressionHandling expr = new ExpressionHandling(this); String validExpr = expr.ensureValidExpression(dataSource, "dataSource", "DataSourceError"); Object ds = expr.evaluateExpression(validExpr, "dataSource", getPageContext()); Iterator iterator = IteratorFactory.createIterator(ds); - PagedDataSet dataSet = new PagedDataSet(dataSource, iterator); - /* todo: extensibility -- need to go to a factory with this */ - if(_stylePolicyName == null || _stylePolicyName.equals(DEFAULT_STYLE_POLICY_NAME)) { - if(_styleClassPrefix != null) - styleModel = new DefaultStyleModel(_styleClassPrefix); - else styleModel = DEFAULT_STYLE_POLICY; - } - else if(_stylePolicyName != null && _stylePolicyName.equals(EMPTY_STYLE_POLICY_NAME)) - styleModel = EMPTY_STYLE_POLICY; + JspContext jspContext = getJspContext(); + HttpServletRequest request = JspUtil.getRequest(jspContext); + + if(_dataGridConfig == null) + _dataGridConfig = DataGridConfigFactory.getInstance(); + + TableRenderer tableRenderer = new TableRenderer(request); + PagedDataSet dataSet = new PagedDataSet(dataSource, iterator); - DataGridFactory dgf = DataGridFactory.getInstance(); + StyleModel styleModel = _dataGridConfig.getStyleModel(_stylePolicyName, _styleClassPrefix); + DataGridResourceProvider resourceProvider = null; + if(_resourceBundlePath == null) + resourceProvider = _dataGridConfig.getDefaultResourceProvider(); + else resourceProvider = _dataGridConfig.getResourceProvider(_resourceBundlePath); + resourceProvider.setLocale(JspUtil.getLocale(jspContext)); - _gridTagModel = new DataGridTagModel(getJspContext(), _name, dataSet, dgf); + _gridTagModel = new DataGridTagModel(_name, _dataGridConfig, jspContext); + _gridTagModel.setDataSet(dataSet); _gridTagModel.setStyleModel(styleModel); _gridTagModel.setTableRenderer(tableRenderer); - _gridTagModel.setResourceBundlePath(_resourceBundlePath); + _gridTagModel.setResourceProvider(resourceProvider); + JspFragment fragment = getJspBody(); if(fragment != null) { StringBuilder builder = new StringBuilder(2048); AbstractRenderAppender appender = new StringBuilderRenderAppender(builder); - /* todo: perf -- this doesn't need to happen when the data set is empty */ - DataAccessProviderStack.addDataAccessProvider(this, getJspContext()); - DataGridUtil.putDataGridTagModel(getJspContext(), _gridTagModel); - - /* - allow sub-tags to do work during START before rendering - this makes it possible to have tags out of order and to - have rendering work correctly - - todo: perf -- should you be able to turn this off for perf? - */ - StringWriter sw = new StringWriter(); - fragment.invoke(sw); - - /* todo: this needs to move into the DataGridTagModel */ - PagerModel pm = _gridTagModel.getDataGridState().getPagerModel(); - _gridTagModel.getDataSet().createWindow(pm.getRow(), pm.getRow() + pm.getPageSize()); - - /* now that the model objects have been initialized, it's time to start rendering */ - _gridTagModel.setRenderState(DataGridTagModel.START_RENDER_STATE); - - if(!_gridTagModel.isDisableDefaultPagerRendering()) - _gridTagModel.renderPager(appender); - - TableTag.State tableState = new TableTag.State(); - tableState.styleClass = styleModel.getTableClass(); - tableRenderer.openTable(tableState, appender); - - /* render the caption */ - _gridTagModel.setRenderState(DataGridTagModel.CAPTION_RENDER_STATE); - sw = new StringWriter(); - fragment.invoke(sw); - String caption = sw.toString(); - if(caption != null && !caption.trim().equals("")) { - appender.append(caption); - } - - /* render the grid rows (header and data) */ - _gridTagModel.setRenderState(DataGridTagModel.GRID_RENDER_STATE); - sw = new StringWriter(); - fragment.invoke(sw); - appender.append(sw.toString()); - - /* render the footer */ - _gridTagModel.setRenderState(DataGridTagModel.FOOTER_RENDER_STATE); - sw = new StringWriter(); - fragment.invoke(sw); - String footer = sw.toString(); - String trimmed = footer.trim(); - if(footer != null && !trimmed.trim().equals("")) { - appender.append(footer); + boolean addedDataAccessProvider = false; + try { + /* todo: perf -- this doesn't need to happen when the data set is empty */ + DataAccessProviderStack.addDataAccessProvider(this, getJspContext()); + DataGridUtil.putDataGridTagModel(getJspContext(), _gridTagModel); + addedDataAccessProvider = true; + + /* + allow sub-tags to do work during START before rendering + this makes it possible to have tags out of order and to + have rendering work correctly + + todo: perf -- should you be able to turn this off for perf? + */ + StringWriter sw = new StringWriter(); + fragment.invoke(sw); + + /* todo: this needs to move into the DataGridTagModel */ + PagerModel pm = _gridTagModel.getDataGridState().getPagerModel(); + _gridTagModel.getDataSet().createWindow(pm.getRow(), pm.getRow() + pm.getPageSize()); + + /* now that the model objects have been initialized, it's time to start rendering */ + _gridTagModel.changeRenderState(DataGridTagModel.RENDER_STATE_START); + + if(!_gridTagModel.isDisableDefaultPagerRendering()) + _gridTagModel.renderPager(appender); + + TableTag.State tableState = new TableTag.State(); + tableState.styleClass = styleModel.getTableClass(); + tableRenderer.openTable(tableState, appender); + + /* render the caption */ + _gridTagModel.changeRenderState(DataGridTagModel.RENDER_STATE_CAPTION); + sw = new StringWriter(); + fragment.invoke(sw); + String caption = sw.toString(); + if(caption != null && !caption.trim().equals("")) { + appender.append(caption); + } + + /* render the grid rows (header and data) */ + _gridTagModel.changeRenderState(DataGridTagModel.RENDER_STATE_GRID); + sw = new StringWriter(); + fragment.invoke(sw); + appender.append(sw.toString()); + + /* render the footer */ + _gridTagModel.changeRenderState(DataGridTagModel.RENDER_STATE_FOOTER); + sw = new StringWriter(); + fragment.invoke(sw); + String footer = sw.toString(); + String trimmed = footer.trim(); + if(footer != null && !trimmed.trim().equals("")) { + appender.append(footer); + } + + tableRenderer.closeTable(appender); + + _gridTagModel.changeRenderState(DataGridTagModel.RENDER_STATE_END); + + /* todo: when rendering using thead / tfoot / tbody, they need to be rendered + in order. when not rendering like this, they need to be written + in thead / tbody / tfoot order. + */ + write(builder.toString()); + } finally { + if(addedDataAccessProvider) { + DataAccessProviderStack.removeDataAccessProvider(getJspContext()); + DataGridUtil.removeDataGridTagModel(getJspContext()); + } } - - tableRenderer.closeTable(appender); - - _gridTagModel.setRenderState(DataGridTagModel.END_RENDER_STATE); - - /* todo: when rendering using thead / tfoot / tbody, they need to be rendered - in order. when not rendering like this, they need to be written - in thead / tbody / tfoot order. - */ - write(builder.toString()); } - - DataAccessProviderStack.removeDataAccessProvider(getJspContext()); - DataGridUtil.removeDataGridTagModel(getJspContext()); } /* =========================================================== @@ -246,14 +253,14 @@ } public Object getCurrentMetadata() { - throw new UnsupportedOperationException(); + throw new UnsupportedOperationException("The data grid does not support metadata binding"); } public String getDataSource() { return "{" + _dataSource + "}"; } - /* todo: seems that this should be done via the stack of DAPs in the PageContext */ + /* todo: bug. nested grids are broken here. this should be done via the stack of objects in the PageContext */ public IDataAccessProvider getProviderParent() { return (IDataAccessProvider)SimpleTagSupport.findAncestorWithClass(this, IDataAccessProvider.class); } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGridUtil.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGridUtil.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGridUtil.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGridUtil.java Sat Feb 19 21:26:48 2005 @@ -27,7 +27,7 @@ /** * */ -public class DataGridUtil { +public final class DataGridUtil { private static final Logger LOGGER = Logger.getInstance(DataGridUtil.class); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Footer.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Footer.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Footer.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Footer.java Sat Feb 19 21:26:48 2005 @@ -34,11 +34,9 @@ import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.table.TableRenderer; /** - * @netui:tag name="footer" + * @netui:tag name="footer" body-content="scriptless" * description="Renders a footer into a NetUI data grid" - * body-content="scriptless" - * @netui.tldx:tag whitespace="indent" - * renderer=""* + * @netui.tldx:tag whitespace="indent" renderer=""* */ public class Footer extends AbstractSimpleTag { @@ -242,7 +240,7 @@ if(dgm == null) throw new JspException("Unable to find a dataGridModel in the JspContext"); - if(dgm.getRenderState() == DataGridTagModel.FOOTER_RENDER_STATE) { + if(dgm.getRenderState() == DataGridTagModel.RENDER_STATE_FOOTER) { JspFragment fragment = getJspBody(); if(fragment != null) { StringWriter sw = new StringWriter(); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Header.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Header.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Header.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Header.java Sat Feb 19 21:26:48 2005 @@ -242,7 +242,7 @@ throw new JspException("Unable to find a dataGridModel in the JspContext"); int gridRenderState = dataGridModel.getRenderState(); - if(gridRenderState == DataGridTagModel.GRID_RENDER_STATE) { + if(gridRenderState == DataGridTagModel.RENDER_STATE_GRID) { StringBuilder content = new StringBuilder(); AbstractRenderAppender appender = new StringBuilderRenderAppender(content); Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java Sat Feb 19 21:26:48 2005 @@ -414,7 +414,6 @@ tableRenderer.closeHeaderCell(appender); } - /* todo: support rendering sort / filter links */ protected void renderHeaderCellContents(AbstractRenderAppender appender) throws IOException, JspException { Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/RenderPager.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/RenderPager.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/RenderPager.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/RenderPager.java Sat Feb 19 21:26:48 2005 @@ -37,14 +37,12 @@ public void doTag() throws JspException { - JspContext jspContext = getJspContext(); - DataGridTagModel dgm = (DataGridTagModel)jspContext.getAttribute("dataGrid"); + + DataGridTagModel dgm = (DataGridTagModel)getJspContext().getAttribute("dataGrid"); assert dgm != null : "RenderPager did not find a DataGridTagModel"; String output = dgm.getPagerRenderer().render(); if(output != null) write(output); - - return; } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java Sat Feb 19 21:26:48 2005 @@ -52,7 +52,7 @@ if(dataGridModel == null) throw new JspException("Unable to find a dataGridModel in the JspContext"); - if(dataGridModel.getRenderState() == DataGridTagModel.GRID_RENDER_STATE) { + if(dataGridModel.getRenderState() == DataGridTagModel.RENDER_STATE_GRID) { StyleModel stylePolicy = dataGridModel.getStyleModel(); assert stylePolicy != null; Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java Sat Feb 19 21:26:48 2005 @@ -36,9 +36,7 @@ return "TemplateCell"; } - protected void renderDataCellContents(AbstractRenderAppender appender, String jspFragmentOutput) - throws JspException, IOException { - + protected void renderDataCellContents(AbstractRenderAppender appender, String jspFragmentOutput) { appender.append(jspFragmentOutput); } Modified: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/DataGridTestUtil.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/DataGridTestUtil.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/DataGridTestUtil.java (original) +++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/DataGridTestUtil.java Sat Feb 19 21:26:48 2005 @@ -20,15 +20,18 @@ import java.lang.reflect.Proxy; import java.util.ArrayList; import java.util.Collections; +import java.util.Locale; import javax.servlet.ServletRequest; import javax.servlet.jsp.JspContext; import javax.servlet.jsp.PageContext; -import org.apache.beehive.netui.test.servlet.HttpServletRequestHandler; import org.apache.beehive.netui.databinding.datagrid.api.pager.PagerModel; import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; -import org.apache.beehive.netui.databinding.datagrid.runtime.DataGridFactory; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfigFactory; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridConfig; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridResourceProvider; import org.apache.beehive.netui.databinding.datagrid.runtime.util.PagedDataSet; +import org.apache.beehive.netui.test.servlet.HttpServletRequestHandler; /** * @@ -86,7 +89,12 @@ } private static final DataGridTagModel buildDataGridTagModel(JspContext jspContext, String name, PagedDataSet dataSet) { - DataGridTagModel dgm = new DataGridTagModel(jspContext, name, dataSet, getDataGridFactory()); + DataGridConfig config = getDataGridConfig(); + DataGridResourceProvider provider = getDataGridConfig().getDefaultResourceProvider(); + provider.setLocale(Locale.US); + DataGridTagModel dgm = new DataGridTagModel(name, config, jspContext); + dgm.setDataSet(dataSet); + dgm.setResourceProvider(provider); dgm.getDataGridState().getPagerModel().setPageAction("fauxPageAction.do"); return dgm; @@ -96,7 +104,7 @@ return dgm.getDataGridState().getPagerModel(); } - static final DataGridFactory getDataGridFactory() { - return DataGridFactory.getInstance(); + static final DataGridConfig getDataGridConfig() { + return DataGridConfigFactory.getInstance(); } } Modified: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java (original) +++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java Sat Feb 19 21:26:48 2005 @@ -24,11 +24,11 @@ import junit.framework.TestCase; import junit.framework.TestSuite; -import org.apache.beehive.netui.test.servlet.ServletFactory; +import org.apache.beehive.netui.databinding.datagrid.api.DataGridState; import org.apache.beehive.netui.databinding.datagrid.api.pager.PagerModel; import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; -import org.apache.beehive.netui.databinding.datagrid.runtime.DataGridState; import org.apache.beehive.netui.databinding.datagrid.runtime.DataGridURLService; +import org.apache.beehive.netui.test.servlet.ServletFactory; /** * Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/customHeaderStyle.jsp URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/customHeaderStyle.jsp?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/customHeaderStyle.jsp (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/customHeaderStyle.jsp Sat Feb 19 21:26:48 2005 @@ -26,7 +26,7 @@ <p> <datagrid:portfolioXmlBean/> <br/> - <netui-data:dataGrid dataSource="pageScope.stocks" name="portfolio" cssClassPrefix="foo" > + <netui-data:dataGrid dataSource="pageScope.stocks" name="portfolio" styleClassPrefix="foo" > <netui-data:header> <netui-data:headerCell headerText="Symbol" cellStyleClass="custom-header"/> <netui-data:headerCell headerText="Price"/> Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/helloHeaderDecorator.jsp URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/helloHeaderDecorator.jsp?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/helloHeaderDecorator.jsp (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/helloHeaderDecorator.jsp Sat Feb 19 21:26:48 2005 @@ -26,7 +26,7 @@ <p> <datagrid:portfolioXmlBean/> <br/> - <netui-data:dataGrid dataSource="pageScope.stocks" name="portfolio" cssClassPrefix="foo" > + <netui-data:dataGrid dataSource="pageScope.stocks" name="portfolio" styleClassPrefix="foo" > <netui-data:header> <netui-data:headerCell headerText="Symbol"> <netui:attribute facet="renderer" name="extends" value="databinding.datagrid.decorator.HelloWorldDecorator"/> Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/stylePrefix.jsp URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/stylePrefix.jsp?view=diff&r1=154473&r2=154474 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/stylePrefix.jsp (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/misc/stylePrefix.jsp Sat Feb 19 21:26:48 2005 @@ -23,7 +23,7 @@ <p> <datagrid:portfolioXmlBean/> <br/> - <netui-data:dataGrid dataSource="pageScope.stocks" name="portfolio" cssClassPrefix="foo" > + <netui-data:dataGrid dataSource="pageScope.stocks" name="portfolio" styleClassPrefix="foo" > <netui-data:header> <netui-data:headerCell headerText="Symbol"/> <netui-data:headerCell headerText="Price"/>
