Author: ekoneil Date: Wed Dec 29 19:01:25 2004 New Revision: 123694 URL: http://svn.apache.org/viewcvs?view=rev&rev=123694 Log: Data grid checkpoint.
- implement sort support in the URL / state management services. This isn't complete yet and throws NYI on some of the method calls, but the correct sort information is tracked in the URL for a single grid on a page. - move cell rendering out into a set of stateless decorators. This allows for composing items to show up in a cell and provides a nice extensibility and testing point. Also allows sort / filter to be applied to header cell columns in a clean way. - delete some unused images from the coreWeb/resources/images directory - add a simple sort test. this doesn't actually sort the data yet (quite cheezy, yes), but it does put the correct query params in the URL. BB: self DRT: NetUI pass BVT: NetUI pass (11 failures) Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/AnchorCellModel.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/HeaderCellModel.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/ImageCellModel.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/LiteralCellModel.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/AnchorCellDecorator.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecorator.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecoratorException.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/HeaderCellDecorator.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/ImageCellDecorator.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/LiteralCellDecorator.java (contents, props changed) incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/SortedCellDecorator.java (contents, props changed) incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/Controller.jpf (contents, props changed) incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/index.jsp (contents, props changed) incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridSimpleSort.xml (contents, props changed) Removed: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/back.gif incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/cancel.gif incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/delete.gif incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/details.gif incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/edit.gif incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/grid.gif incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/insert.gif incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/update.gif Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/ColumnModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultFilter.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultSort.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/AbstractPagerRenderer.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/FirstPreviousNextLastPagerRenderer.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/PreviousNextPagerRenderer.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/SortService.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/util/JspUtil.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlColumn.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AnchorColumn.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Columns.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ConfigurePager.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/ImageColumn.java incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/LiteralColumn.java incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/ColumnModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/ColumnModel.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/ColumnModel.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/ColumnModel.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/ColumnModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/ColumnModel.java Wed Dec 29 19:01:25 2004 @@ -17,17 +17,23 @@ */ package org.apache.beehive.netui.databinding.datagrid.model; +import java.util.ArrayList; +import javax.servlet.jsp.JspException; + +import org.apache.beehive.netui.tags.html.FormatTag.Formatter; +import org.apache.beehive.netui.util.logging.Logger; + /** */ public class ColumnModel { + private static final Logger LOGGER = Logger.getInstance(ColumnModel.class); + private ColumnsModel _columnsModel; private DataGridModel _dataGridModel; + private ArrayList<Formatter> _formatters; - public ColumnModel(DataGridModel dataGridModel, ColumnsModel columnsModel) - { - _dataGridModel = dataGridModel; - _columnsModel = columnsModel; + public ColumnModel() { } public boolean isRenderingHeader() { @@ -36,5 +42,52 @@ public boolean isRenderingData() { return _columnsModel.getRenderState() == ColumnsModel.DATA_RENDER_STATE; + } + + public ColumnsModel getColumnsModel() { + return _columnsModel; + } + + public void setColumnsModel(ColumnsModel columnsModel) { + _columnsModel = columnsModel; + } + + public DataGridModel getDataGridModel() { + return _dataGridModel; + } + + public void setDataGridModel(DataGridModel dataGridModel) { + _dataGridModel = dataGridModel; + } + + public void addFormatter(Formatter formatter) { + if(_formatters == null) + _formatters = new ArrayList<Formatter>(); + + _formatters.add(formatter); + } + + public String formatText(Object value) { + if (value == null) + return null; + + if (_formatters == null) + return value.toString(); + + Object formatted = null; + for (Formatter formatter : _formatters) { + assert formatter != null; + try { + formatted = formatter.format(value); + } catch (JspException e) { + /* todo: error reporting */ + if (LOGGER.isErrorEnabled()) + LOGGER.error("A formatter of type \"" + formatter.getClass().getName() + "\" threw an exception " + e, e); + } + } + + assert formatted != null; + + return formatted.toString(); } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java Wed Dec 29 19:01:25 2004 @@ -18,13 +18,16 @@ package org.apache.beehive.netui.databinding.datagrid.model; import javax.servlet.jsp.JspContext; +import javax.servlet.jsp.PageContext; import org.apache.beehive.netui.databinding.datagrid.rendering.TableRenderer; -import org.apache.beehive.netui.databinding.datagrid.services.FilterService; import org.apache.beehive.netui.databinding.datagrid.services.PagerService; -import org.apache.beehive.netui.databinding.datagrid.services.SortService; +import org.apache.beehive.netui.databinding.datagrid.services.DataGridStateService; +import org.apache.beehive.netui.databinding.datagrid.services.PagerService; import org.apache.beehive.netui.databinding.datagrid.util.PagedDataSet; import org.apache.beehive.netui.databinding.datagrid.rendering.IPagerRenderer; +import org.apache.beehive.netui.databinding.datagrid.rendering.TableRenderer; +import org.apache.beehive.netui.databinding.datagrid.rendering.impl.PreviousNextPagerRenderer; import org.apache.beehive.netui.databinding.datagrid.rendering.impl.PreviousNextPagerRenderer; import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; @@ -48,11 +51,10 @@ private PagedDataSet _dataSet = null; private TableRenderer _tableRenderer = null; - private SortService _sortService = null; - private FilterService _filterService = null; - private int _renderState = START_RENDER_STATE; + private DataGridStateService _dataGridStateService = null; + public DataGridModel(JspContext jspContext, String name, PagedDataSet dataSet) { super(); @@ -164,6 +166,17 @@ public void setTableRenderer(TableRenderer tableRenderer) { _tableRenderer = tableRenderer; + } + + public DataGridStateService getDataGridStateService() { + if(_dataGridStateService == null) + _dataGridStateService = DataGridStateService.createInstance(((PageContext)_jspContext).getRequest(), getName()); + + return _dataGridStateService; + } + + public void setDataGridStateService(DataGridStateService dataGridStateService) { + _dataGridStateService = dataGridStateService; } /* =========================================================== Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java Wed Dec 29 19:01:25 2004 @@ -18,6 +18,7 @@ package org.apache.beehive.netui.databinding.datagrid.model; import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.services.PagerService; import org.apache.beehive.netui.databinding.datagrid.util.JspUtil; import org.apache.beehive.netui.pageflow.internal.InternalUtils; import org.apache.beehive.netui.util.logging.Logger; Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/AnchorCellModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/AnchorCellModel.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/AnchorCellModel.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,93 @@ +/* + * 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.model.cell; + +import java.util.HashMap; + +import org.apache.beehive.netui.tags.rendering.AnchorTag; +import org.apache.beehive.netui.tags.rendering.AnchorTag.State; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; + +/** + * + */ +public class AnchorCellModel + extends ColumnModel { + + public AnchorCellModel() { + super(); + } + + private String _value = null; + private String _href = null; + private String _scopeId = null; + private String _action = null; + private HashMap _params = null; + private AnchorTag.State _anchorState = new AnchorTag.State(); + + public String getValue() { + return _value; + } + + public void setValue(String value) { + _value = value; + } + + public String getHref() { + return _href; + } + + public void setHref(String href) { + _href = href; + } + + public String getScopeId() { + return _scopeId; + } + + public void setScopeId(String scopeId) { + _scopeId = scopeId; + } + + public String getAction() { + return _action; + } + + public void setAction(String action) { + _action = action; + } + + public HashMap getParams() { + if(_params == null) + _params = new HashMap(); + + return _params; + } + + public void setParams(HashMap params) { + _params = params; + } + + public State getAnchorState() { + return _anchorState; + } + + public void setAnchorState(State anchorState) { + _anchorState = anchorState; + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/HeaderCellModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/HeaderCellModel.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/HeaderCellModel.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,88 @@ +/* + * 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.model.cell; + +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; + +/** + * + */ +public class HeaderCellModel + extends ColumnModel { + + private String _headerText = null; + private String _bodyContent = null; + + private String _scopeId = null; + + private boolean _disableSortRendering = false; + private String _sortExpression = null; + private String _sortAction = null; + + public String getScopeId() { + return _scopeId; + } + + public void setScopeId(String scopeId) { + _scopeId = scopeId; + } + + public String getSortAction() { + return _sortAction; + } + + public void setSortAction(String sortAction) { + _sortAction = sortAction; + } + + public boolean isSortable() { + return _sortExpression != null; + } + + public boolean isDisableSortRendering() { + return _disableSortRendering; + } + + public void setDisableSortRendering(boolean disableSortRendering) { + _disableSortRendering = disableSortRendering; + } + + public String getSortExpression() { + return _sortExpression; + } + + public void setSortExpression(String sortExpression) { + _sortExpression = sortExpression; + } + + public String getHeaderText() { + return _headerText; + } + + public void setHeaderText(String headerText) { + _headerText = headerText; + } + + public String getBodyContent() { + return _bodyContent; + } + + public void setBodyContent(String bodyContent) { + _bodyContent = bodyContent; + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/ImageCellModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/ImageCellModel.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/ImageCellModel.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,42 @@ +/* + * 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.model.cell; + +import org.apache.beehive.netui.tags.rendering.ImageTag; +import org.apache.beehive.netui.tags.rendering.ImageTag.State; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; + +/** + * + */ +public class ImageCellModel + extends ColumnModel { + + private ImageTag.State _imageState = null; + + public ImageTag.State getImageState() { + if(_imageState == null) + _imageState = new ImageTag.State(); + + return _imageState; + } + + public void setImageState(State imageState) { + _imageState = imageState; + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/LiteralCellModel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/LiteralCellModel.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/cell/LiteralCellModel.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,50 @@ +/* + * 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.model.cell; + +import org.apache.beehive.netui.tags.rendering.SpanTag; +import org.apache.beehive.netui.tags.rendering.SpanTag.State; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; + +/** + * + */ +public class LiteralCellModel + extends ColumnModel { + + private static final SpanTag.State DEFAULT_SPAN_STATE = new SpanTag.State(); + + private String _value = null; + private SpanTag.State _spanState = new SpanTag.State(); + + public String getValue() { + return _value; + } + + public void setValue(String value) { + _value = value; + } + + public State getSpanState() { + return _spanState != null ? _spanState : DEFAULT_SPAN_STATE; + } + + public void setSpanState(State spanState) { + _spanState = spanState; + } +} Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultFilter.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultFilter.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultFilter.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultFilter.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultFilter.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultFilter.java Wed Dec 29 19:01:25 2004 @@ -21,6 +21,7 @@ import org.apache.beehive.netui.databinding.datagrid.model.IFilter; import org.apache.beehive.netui.databinding.datagrid.services.IllegalFilterException; +import org.apache.beehive.netui.databinding.datagrid.services.IllegalFilterException; import org.apache.beehive.netui.util.logging.Logger; /** Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultSort.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultSort.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultSort.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultSort.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultSort.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/impl/DefaultSort.java Wed Dec 29 19:01:25 2004 @@ -60,7 +60,7 @@ } public void setDirection(int direction) { - assert direction == ISort.ASCENDING || direction == ISort.DESCENDING; + assert direction == ISort.ASCENDING || direction == ISort.DESCENDING || direction == ISort.NONE; _dir = direction; } @@ -101,18 +101,23 @@ } private String writeSortParam(String namespace, boolean flipDirection) { - StringBuilder builder = new StringBuilder(); int direction = _dir; if (flipDirection) /* todo: break this dependency. switch ISort to AbstractSort with utility methods */ direction = flipSortDirection(direction); + return writeSortParam(namespace, _expr, direction); + } + + public static final String writeSortParam(String namespace, String sortExpression, int direction) { + StringBuilder builder = new StringBuilder(); + builder.append(namespace); builder.append("~"); if (direction == ISort.DESCENDING) builder.append("-"); - builder.append(_expr); + builder.append(sortExpression); return builder.toString(); } } Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/AnchorCellDecorator.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/AnchorCellDecorator.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/AnchorCellDecorator.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,88 @@ +/* + * 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.rendering.cell; + +import java.net.URISyntaxException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.JspContext; + +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.AnchorCellModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.AnchorCellModel; +import org.apache.beehive.netui.databinding.datagrid.util.JspUtil; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.CellDecorator; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.CellDecoratorException; +import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; +import org.apache.beehive.netui.tags.rendering.SpanTag; +import org.apache.beehive.netui.tags.rendering.AnchorTag; +import org.apache.beehive.netui.tags.rendering.TagRenderingBase; +import org.apache.beehive.netui.tags.databinding.datagrid.DataGridUtil; +import org.apache.beehive.netui.util.logging.Logger; + +/** + * + */ +public class AnchorCellDecorator + extends CellDecorator { + + private static final Logger LOGGER = Logger.getInstance(AnchorCellDecorator.class); + + /* todo: need to tie this into the grid's error reporting */ + public void decorate(JspContext jspContext, AbstractRenderAppender appender, ColumnModel columnModel) + throws CellDecoratorException { + + assert columnModel instanceof AnchorCellModel; + + AnchorCellModel anchorCellModel = (AnchorCellModel)columnModel; + HttpServletRequest request = JspUtil.getRequest(jspContext); + + SpanTag.State spanState = new SpanTag.State(); + AnchorTag.State anchorState = anchorCellModel.getAnchorState(); + + DataGridModel dgm = DataGridUtil.getDataGridModel(jspContext); + assert dgm != null; + + String url = null; + try { + url = JspUtil.createURL(anchorCellModel.getHref(), + anchorCellModel.getAction(), + null, + anchorCellModel.getScopeId(), + anchorCellModel.getParams(), + jspContext); + } catch (URISyntaxException mue) { + + if (LOGGER.isErrorEnabled()) + LOGGER.error("Exception creating URL with href " + anchorCellModel.getHref() + " action " + anchorCellModel.getAction(), mue); + + throw new CellDecoratorException("An exception occurred creating an URL while decorating an Anchor", mue); + } + + anchorState.href = url; + + TagRenderingBase anchorTag = TagRenderingBase.Factory.getRendering(TagRenderingBase.ANCHOR_TAG, request); + TagRenderingBase spanTag = TagRenderingBase.Factory.getRendering(TagRenderingBase.SPAN_TAG, request); + + anchorTag.doStartTag(appender, anchorState); + spanTag.doStartTag(appender, spanState); + appender.append(anchorCellModel.getValue()); + spanTag.doEndTag(appender); + anchorTag.doEndTag(appender); + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecorator.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecorator.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecorator.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,34 @@ +/* + * 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.rendering.cell; + +import javax.servlet.jsp.JspContext; + +import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; + +/** + * + */ +public abstract class CellDecorator { + + public abstract void decorate(JspContext jspContext, + AbstractRenderAppender appender, + ColumnModel columnModel) + throws CellDecoratorException; +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecoratorException.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecoratorException.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/CellDecoratorException.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,41 @@ +/* + * 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.rendering.cell; + +/** + * + */ +public class CellDecoratorException + extends RuntimeException { + + public CellDecoratorException() { + super(); + } + + public CellDecoratorException(String message) { + super(message); + } + + public CellDecoratorException(Throwable cause) { + super(cause); + } + + public CellDecoratorException(String message, Throwable cause) { + super(message, cause); + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/HeaderCellDecorator.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/HeaderCellDecorator.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/HeaderCellDecorator.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,46 @@ +/* + * 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.rendering.cell; + +import javax.servlet.jsp.JspContext; + +import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.HeaderCellModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.HeaderCellModel; + +/** + * + */ +public class HeaderCellDecorator + extends CellDecorator { + + public void decorate(JspContext jspContext, AbstractRenderAppender appender, ColumnModel columnModel) + throws CellDecoratorException { + + assert columnModel instanceof HeaderCellModel; + HeaderCellModel headerCellModel = (HeaderCellModel)columnModel; + + if (headerCellModel.getHeaderText() != null) + appender.append(headerCellModel.getHeaderText()); + else if(headerCellModel.getBodyContent() != null) + appender.append(headerCellModel.getBodyContent()); + else appender.append(" "); + + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/ImageCellDecorator.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/ImageCellDecorator.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/ImageCellDecorator.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,47 @@ +/* + * 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.rendering.cell; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.JspContext; + +import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; +import org.apache.beehive.netui.tags.rendering.TagRenderingBase; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.ImageCellModel; +import org.apache.beehive.netui.databinding.datagrid.util.JspUtil; + +/** + * + */ +public class ImageCellDecorator + extends CellDecorator { + + public void decorate(JspContext jspContext, AbstractRenderAppender appender, ColumnModel columnModel) + throws CellDecoratorException { + + assert columnModel instanceof ImageCellModel; + + ImageCellModel imageColumnModel = (ImageCellModel)columnModel; + HttpServletRequest request = JspUtil.getRequest(jspContext); + + TagRenderingBase br = TagRenderingBase.Factory.getRendering(TagRenderingBase.IMAGE_TAG, request); + br.doStartTag(appender, imageColumnModel.getImageState()); + br.doEndTag(appender); + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/LiteralCellDecorator.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/LiteralCellDecorator.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/LiteralCellDecorator.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,51 @@ +/* + * 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.rendering.cell; + +import javax.servlet.jsp.JspContext; +import javax.servlet.http.HttpServletRequest; + +import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; +import org.apache.beehive.netui.tags.rendering.TagRenderingBase; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.LiteralCellModel; +import org.apache.beehive.netui.databinding.datagrid.util.JspUtil; + +/** + * + */ +public class LiteralCellDecorator + extends CellDecorator { + + public void decorate(JspContext jspContext, AbstractRenderAppender appender, ColumnModel columnModel) + throws CellDecoratorException { + + assert columnModel instanceof LiteralCellModel; + LiteralCellModel literalColumnModel = (LiteralCellModel)columnModel; + + HttpServletRequest request = JspUtil.getRequest(jspContext); + TagRenderingBase span = TagRenderingBase.Factory.getRendering(TagRenderingBase.SPAN_TAG, request); + + /* todo: need to support formatting here */ + String formatted = columnModel.formatText(literalColumnModel.getValue()); + + span.doStartTag(appender, literalColumnModel.getSpanState()); + appender.append(formatted); + span.doEndTag(appender); + } +} Added: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/SortedCellDecorator.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/SortedCellDecorator.java?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/cell/SortedCellDecorator.java Wed Dec 29 19:01:25 2004 @@ -0,0 +1,127 @@ +/* + * 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.rendering.cell; + +import java.util.Map; +import java.net.URISyntaxException; +import javax.servlet.jsp.JspContext; +import javax.servlet.http.HttpServletRequest; + +import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; +import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; +import org.apache.beehive.netui.tags.rendering.TagRenderingBase; +import org.apache.beehive.netui.tags.rendering.AnchorTag; +import org.apache.beehive.netui.tags.rendering.ImageTag; +import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; +import org.apache.beehive.netui.tags.html.HtmlConstants; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.HeaderCellModel; +import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; +import org.apache.beehive.netui.databinding.datagrid.util.JspUtil; +import org.apache.beehive.netui.databinding.datagrid.services.DataGridStateService; +import org.apache.beehive.netui.databinding.datagrid.services.SortService; +import org.apache.beehive.netui.util.logging.Logger; + +/** + * + */ +public class SortedCellDecorator + extends CellDecorator { + + private static final Logger LOGGER = Logger.getInstance(SortedCellDecorator.class); + + private CellDecorator _decorator; + + public SortedCellDecorator(CellDecorator decorator) { + _decorator = decorator; + } + + public void decorate(JspContext jspContext, AbstractRenderAppender appender, ColumnModel columnModel) + throws CellDecoratorException { + + assert columnModel instanceof HeaderCellModel; + HeaderCellModel headerCellModel = (HeaderCellModel)columnModel; + + String sortLink = null; + + _decorator.decorate(jspContext, appender, columnModel); + + if(headerCellModel.isSortable()) { + sortLink = buildSortLink(jspContext, headerCellModel); + appender.append(" "); + appender.append(sortLink); + } + } + + protected String buildSortLink(JspContext jspContext, HeaderCellModel cellModel) { + + HttpServletRequest request = JspUtil.getRequest(jspContext); + DataGridModel dgm = cellModel.getDataGridModel(); + assert dgm != null; + + DataGridStateService dgss = dgm.getDataGridStateService(); + SortService ss = dgss.getSortService(); + + StringBuilder builder = new StringBuilder(); + AbstractRenderAppender appender = new StringBuilderRenderAppender(builder); + + TagRenderingBase imageRenderer = TagRenderingBase.Factory.getRendering(TagRenderingBase.IMAGE_TAG, request); + TagRenderingBase anchorRenderer = TagRenderingBase.Factory.getRendering(TagRenderingBase.ANCHOR_TAG, request); + + AnchorTag.State aTag = new AnchorTag.State(); + ImageTag.State imgTag = new ImageTag.State(); + + int sortDirection = ss.getSortDirection(cellModel.getSortExpression()); + + /* build icon for existing sort */ + if(ss.isSorted(cellModel.getSortExpression())) + imgTag.src = dgss.getSortImagePath(request.getContextPath(), sortDirection); + else imgTag.src = dgss.getDefaultSortImagePath(request.getContextPath()); + + imgTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.BORDER, "false"); + + Map queryParams = dgss.getSortQueryParamsMap(cellModel.getSortExpression()); + + String href = null; + try { + href = JspUtil.createURL(request.getRequestURI(), + cellModel.getSortAction(), + null, + cellModel.getScopeId(), + queryParams, + dgm.getJspContext()); + } + catch(URISyntaxException se) { + String msg = "Exception creating sort URI"; + + if(LOGGER.isErrorEnabled()) + LOGGER.error(msg, se); + + throw new CellDecoratorException(msg, se); + } + + aTag.href = href; + + anchorRenderer.doStartTag(appender, aTag); + imageRenderer.doStartTag(appender, imgTag); + imageRenderer.doEndTag(appender); + anchorRenderer.doEndTag(appender); + + return builder.toString(); + } +} Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/AbstractPagerRenderer.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/AbstractPagerRenderer.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/AbstractPagerRenderer.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/AbstractPagerRenderer.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/AbstractPagerRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/AbstractPagerRenderer.java Wed Dec 29 19:01:25 2004 @@ -19,6 +19,7 @@ import org.apache.beehive.netui.util.logging.Logger; import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.services.PagerService; import org.apache.beehive.netui.databinding.datagrid.model.PagerModel; import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; import org.apache.beehive.netui.databinding.datagrid.rendering.IPagerRenderer; Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/FirstPreviousNextLastPagerRenderer.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/FirstPreviousNextLastPagerRenderer.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/FirstPreviousNextLastPagerRenderer.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/FirstPreviousNextLastPagerRenderer.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/FirstPreviousNextLastPagerRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/FirstPreviousNextLastPagerRenderer.java Wed Dec 29 19:01:25 2004 @@ -21,6 +21,10 @@ import org.apache.beehive.netui.databinding.datagrid.model.PagerModel; import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.rendering.impl.AbstractPagerRenderer; +import org.apache.beehive.netui.databinding.datagrid.rendering.impl.AbstractPagerRenderer; public class FirstPreviousNextLastPagerRenderer extends AbstractPagerRenderer Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/PreviousNextPagerRenderer.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/PreviousNextPagerRenderer.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/PreviousNextPagerRenderer.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/PreviousNextPagerRenderer.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/PreviousNextPagerRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/rendering/impl/PreviousNextPagerRenderer.java Wed Dec 29 19:01:25 2004 @@ -20,6 +20,10 @@ import org.apache.beehive.netui.databinding.datagrid.model.PagerModel; import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.services.PagerService; +import org.apache.beehive.netui.databinding.datagrid.rendering.impl.AbstractPagerRenderer; +import org.apache.beehive.netui.databinding.datagrid.rendering.impl.AbstractPagerRenderer; import org.apache.beehive.netui.util.logging.Logger; public class PreviousNextPagerRenderer Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/DataGridStateService.java Wed Dec 29 19:01:25 2004 @@ -25,12 +25,14 @@ import org.apache.beehive.netui.util.logging.Logger; import org.apache.beehive.netui.databinding.datagrid.model.ISort; +import org.apache.beehive.netui.databinding.datagrid.model.impl.DefaultSort; /** * todo: need to support registering URL prefixes that have state service handlers * and should be omitted from regular URL construction. */ -public class DataGridStateService { +public class DataGridStateService + implements java.io.Serializable { private static final Logger LOGGER = Logger.getInstance(DataGridStateService.class); @@ -39,7 +41,7 @@ public static final DataGridStateService createInstance(ServletRequest request, String namespace) { assert request != null; - assert namespace != null && !namespace.equals(""); + assert namespace != null && !namespace.equals(""); DataGridStateService dgss = new DataGridStateService(namespace); dgss.handleRequest(request); @@ -50,8 +52,8 @@ /* todo: need a factory for creating these state services */ /** * Default constructor that builds a DataGridStateService with the default - * configuration including support for a [EMAIL PROTECTED] SortService} and a - * [EMAIL PROTECTED] FilterService}. + * configuration including support for a [EMAIL PROTECTED] org.apache.beehive.netui.databinding.datagrid.services.SortService} and a + * [EMAIL PROTECTED] org.apache.beehive.netui.databinding.datagrid.services.FilterService}. */ private DataGridStateService(String namespace) { super(); @@ -79,7 +81,7 @@ return _namespace; } - public Map getSortQueryParamsMap() { + public Map<String, String[]> buildSortQueryParamsMap() { ISort[] sorts = _sortService.getSorts(); if(sorts == null) @@ -90,18 +92,73 @@ valueList.add(sorts[i].write(_namespace)); String[] values = (String[])valueList.toArray(new String[0]); - HashMap map = new HashMap(values.length); + HashMap<String, String[]> map = new HashMap<String, String[]>(values.length); map.put(_sortService.getKey(), values); return map; } - - public Map getSortParamsMap() { - throw new UnsupportedOperationException("NYI"); + + public Map<String, String[]> buildSortQueryParamsMap(String sortExpression, int direction) { + /* todo: consolidate the query param map construction methods */ + assert sortExpression != null; + assert direction == ISort.ASCENDING || direction == ISort.DESCENDING || direction == ISort.NONE; + + ISort[] sorts = _sortService.getSorts(); + + ArrayList valueList = new ArrayList(5); + if(direction != ISort.NONE && !_sortService.isSorted(sortExpression)) + valueList.add(DefaultSort.writeSortParam(_namespace, sortExpression, direction)); + + if(sorts != null) { + /* todo: deal with additional query params here */ + for(int i = 0; i < sorts.length; i++) { + if(sorts[i].getSortExpression().equals(sortExpression)) { + if(direction != ISort.NONE) + /* todo: broke encapsulation here. bad bad bad. */ + /* @todo: need to move this parameter handling into some sort of URLParams class that can be *fast* */ + valueList.add(DefaultSort.writeSortParam(_namespace, sorts[i].getSortExpression(), direction)); + } + else valueList.add(sorts[i].write(_namespace)); + } + } + + HashMap<String, String[]> map = new HashMap<String, String[]>(valueList.size()); + map.put(_sortService.getKey(), (String[])valueList.toArray(new String[0])); + return map; } - public String getSortParamsString(String sortExpression) { - throw new UnsupportedOperationException("NYI"); + public String getSortImagePath(String contextPath, int direction) { + switch (direction) + { + case ISort.ASCENDING: + return contextPath + "/resources/images/sortdown.gif"; + case ISort.DESCENDING: + return contextPath + "/resources/images/sortup.gif"; + default: + assert direction == ISort.NONE : "Encountered an invalid sort direction."; + /* todo: need to flag on whether this is sort up or down and set the image accordingly */ + return getDefaultSortImagePath(contextPath); + } + } + + public String getDefaultSortImagePath(String contextPath) { + /* todo: need to allow external configuration of this image path */ + return contextPath + "/resources/images/sortable.gif"; + } + + public Map<String, String[]> getSortQueryParamsMap(String sortExpression) { + int sortDirection = _sortService.getSortDirection(sortExpression); + + if(sortDirection == ISort.NONE) { + return buildSortQueryParamsMap(sortExpression, ISort.ASCENDING); + } + else if(sortDirection == ISort.ASCENDING) { + return buildSortQueryParamsMap(sortExpression, ISort.DESCENDING); + } + else if(sortDirection == ISort.DESCENDING) { + return buildSortQueryParamsMap(sortExpression, ISort.NONE); + } + else throw new IllegalStateException("Received invalid sort direction \"" + sortDirection + "\""); } private static final SortService ensureSortService(ServletRequest request, String namespace) { Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/SortService.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/SortService.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/SortService.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/SortService.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/SortService.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/services/SortService.java Wed Dec 29 19:01:25 2004 @@ -27,7 +27,8 @@ /** */ -public class SortService { +public class SortService + implements java.io.Serializable { private static final Logger LOGGER = Logger.getInstance(SortService.class); private static final String SORT_DELIM = "~"; @@ -36,6 +37,7 @@ public static final SortService getInstance(ServletRequest request, String namespace) { assert request != null; assert namespace != null && !namespace.equals(""); + SortService svc = new SortService(namespace); svc.handleRequest(request); return svc; @@ -90,6 +92,7 @@ public boolean addSort(String sortExpression, int direction) { assert direction == ISort.NONE || direction == ISort.ASCENDING || direction == ISort.DESCENDING; + //ISort sort = new DefaultSort(sortExpression, direction); throw new UnsupportedOperationException("NYI"); } @@ -142,6 +145,6 @@ } } - return (ISort[]) sorts.toArray(new ISort[0]); + return (ISort[])sorts.toArray(new ISort[0]); } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/util/JspUtil.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/util/JspUtil.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/util/JspUtil.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/util/JspUtil.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/util/JspUtil.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/util/JspUtil.java Wed Dec 29 19:01:25 2004 @@ -31,8 +31,9 @@ public class JspUtil { - private static final Logger _logger = Logger.getInstance(JspUtil.class); + private static final Logger LOGGER = Logger.getInstance(JspUtil.class); + /* do not construct */ private JspUtil() {} public static final HttpServletRequest getRequest(JspContext jspContext) @@ -54,10 +55,9 @@ { PageContext pageContext = getPageContext(jspContext); - // Add the jpfScopeID parameter, if the scope attribute is present. + /* add the jpfScopeID parameter, if the scope attribute is present. */ if(scope != null) { - // todo: this won't work -- need to return a URL object here. probably need to write that MutableURL class... if(params == null) params = new HashMap(); @@ -67,20 +67,15 @@ // Generate the opening anchor element MutableURI uri = null; if(action != null) - { uri = PageFlowTagUtils.rewriteActionURL(pageContext, action, params, location); - } else if(href != null) - { uri = PageFlowTagUtils.rewriteHrefURL(pageContext, href, params, location); - } assert uri != null; - //TODO... shouldn't this also be a call to response.encodeURL(uri.toString()) for session ID? - if (uri.isAbsolute()) { + /* todo: shouldn't this also be a call to response.encodeURL(uri.toString()) for session ID? */ + if (uri.isAbsolute()) return uri.toXMLString(); - } - return uri.toString(); + else return uri.toString(); } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java Wed Dec 29 19:01:25 2004 @@ -18,10 +18,8 @@ package org.apache.beehive.netui.tags.databinding.datagrid; import java.io.IOException; -import java.io.StringWriter; import java.util.ArrayList; import javax.servlet.jsp.tagext.JspTag; -import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.JspException; import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; @@ -31,7 +29,6 @@ import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; 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; @@ -39,17 +36,13 @@ * */ public abstract class AbstractColumn - extends AbstractSimpleTag - implements Formattable { - - private static final Logger _logger = Logger.getInstance(AbstractColumn.class); - - static final String COLUMN_MODEL_KEY = "column"; + extends AbstractSimpleTag + implements Formattable { + private static final Logger LOGGER = Logger.getInstance(AbstractColumn.class); private static final String EMPTY_CELL = " "; private String _headerText = null; - private ArrayList _formatters = null; /** * @netui:attribute required="false" rtexprvalue="true" @@ -63,10 +56,7 @@ } public void addFormatter(Formatter formatter) { - if(_formatters == null) - _formatters = new ArrayList(); - - _formatters.add(formatter); + internalGetColumnModel().addFormatter(formatter); } /** @@ -83,7 +73,7 @@ * @throws IOException */ public void doTag() - throws JspException, IOException { + throws JspException, IOException { /* todo: this should be done in a TLV */ JspTag parent = findAncestorWithClass(this, Columns.class); @@ -110,16 +100,18 @@ assert renderState == ColumnsModel.DATA_RENDER_STATE || renderState == ColumnsModel.HEADER_RENDER_STATE; - ColumnModel model = new ColumnModel(dataGridModel, columns); + ColumnModel model = internalGetColumnModel(); + model.setDataGridModel(dataGridModel); + model.setColumnsModel(columns); applyAttributes(); - if (_logger.isDebugEnabled()) { - _logger.debug("current column\n\trender state: " + renderState); - _logger.debug("\tidentity hash code: " + System.identityHashCode(model)); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("current column\n\trender state: " + renderState); + LOGGER.debug("\tidentity hash code: " + System.identityHashCode(model)); } - getJspContext().setAttribute(COLUMN_MODEL_KEY, model); + DataGridUtil.putColumnModel(getJspContext(), model); StringBuilder content = new StringBuilder(); AbstractRenderAppender appender = new StringBuilderRenderAppender(content); @@ -133,12 +125,14 @@ if (content != null && content.length() > 0) getJspContext().getOut().println(content.toString()); - getJspContext().removeAttribute(COLUMN_MODEL_KEY); + DataGridUtil.removeColumnModel(getJspContext()); } return; } + protected abstract ColumnModel internalGetColumnModel(); + protected abstract void renderHeaderCell(AbstractRenderAppender appender) throws IOException, JspException; protected abstract void renderDataCell(AbstractRenderAppender appender) throws IOException, JspException; @@ -150,27 +144,5 @@ /* todo: apply the global sort / filter attributes here */ protected void applyAttributes() throws JspException { - } - - protected String formatText(Object text) { - if (text == null) - return null; - - if (_formatters == null) - return text.toString(); - - for (int i = 0; i < _formatters.size(); i++) { - FormatTag.Formatter currentFormatter = (FormatTag.Formatter) _formatters.get(i); - assert currentFormatter != null; - try { - text = currentFormatter.format(text); - } catch (JspException e) { - // todo: need a way to register errors in the datagridmodel so that they can be reported back to the rendering engine - if (_logger.isErrorEnabled()) - _logger.error("A formatter of type \"" + currentFormatter.getClass().getName() + "\" threw an exception " + e, e); - } - } - - return text.toString(); } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlColumn.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlColumn.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlColumn.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlColumn.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlColumn.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlColumn.java Wed Dec 29 19:01:25 2004 @@ -23,7 +23,11 @@ import javax.servlet.jsp.JspException; import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.HeaderCellModel; import org.apache.beehive.netui.databinding.datagrid.rendering.TableRenderer; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.HeaderCellDecorator; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.CellDecorator; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.SortedCellDecorator; import org.apache.beehive.netui.tags.IAttributeConsumer; import org.apache.beehive.netui.tags.html.HtmlConstants; import org.apache.beehive.netui.tags.rendering.ThTag; @@ -41,10 +45,47 @@ { private static final String HEADER_FACET_NAME = "header"; private static final String DEFAULT_FACET_NAME = "default"; + private static final CellDecorator DEFAULT_HEADER_RENDERER; + private static final CellDecorator SORTED_HEADER_RENDERER; + + static { + DEFAULT_HEADER_RENDERER = new HeaderCellDecorator(); + SORTED_HEADER_RENDERER = new SortedCellDecorator(DEFAULT_HEADER_RENDERER); + } private TdTag.State _tdState = new TdTag.State(); private ThTag.State _thState = new ThTag.State(); + private HeaderCellModel _headerCellModel = new HeaderCellModel(); + + /** + * @netui:attribute required="false" rtexprvalue="true" description="Boolean switch that sets whether the default sort link should be rendered" + */ + public void setDisableSortRendering(boolean disableSortRendering) { + _headerCellModel.setDisableSortRendering(disableSortRendering); + } + + /** + * @netui:attribute required="false" rtexprvalue="true" description="String expression that represents the field to sort when sorting data in this column" + */ + public void setSortExpression(String sortExpression) { + _headerCellModel.setSortExpression(sortExpression); + } + + /** + * @netui:attribute required="false" rtexprvalue="true" description="Optional String scopeId that qualifies URL parameters into a particular scope" + */ + public void setScopeId(String scopeId) { + _headerCellModel.setScopeId(scopeId); + } + + /** + * @netui:attribute required="false" rtexprvalue="true" description="The action to run when performing a sort on this column" + */ + public void setSortAction(String sortAction) { + _headerCellModel.setSortAction(sortAction); + } + /** * Sets the onClick javascript event. * @@ -368,7 +409,7 @@ * @netui.tldx:attribute propertyclass="workshop.jspdesigner.properties.EventPropertyClass" category="event" */ public void setHeaderOnMouseOver(String onMouseOver) { - internalGetThState().registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOUT, onMouseOver); + internalGetThState().registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOVER, onMouseOver); } /** @@ -428,23 +469,23 @@ * @param facet The name of a facet to which the attribute will be applied. This is optional. */ public void setAttribute(String name, String value, String facet) + throws JspException { /* TODO: need to handle pluggable facets here */ if(facet != null && facet.equals(HEADER_FACET_NAME)) - { addStateAttribute(internalGetThState(), name, value, facet); - } else if(facet == null || !facet.equals(DEFAULT_FACET_NAME)) - { addStateAttribute(internalGetHtmlState(), name, value, facet); - } - else - { + else { String s = Bundle.getString("Tags_AttributeFacetNotSupported", new Object[]{facet}); - throw new RuntimeException(s); + throw new JspException(s); } } + /** + * + * @return + */ protected abstract AbstractHtmlState internalGetHtmlState(); protected void renderHeaderCell(AbstractRenderAppender appender) @@ -456,16 +497,17 @@ TableRenderer tableRenderer = dataGridModel.getTableRenderer(); assert tableRenderer != null; - if (_thState.styleClass == null) - _thState.styleClass = dataGridModel.getCssPolicy().getHeaderCellClass(); + if (internalGetThState().styleClass == null) + internalGetThState().styleClass = dataGridModel.getCssPolicy().getHeaderCellClass(); - tableRenderer.openHeaderCell(_thState, appender); + tableRenderer.openHeaderCell(internalGetThState(), appender); renderHeaderCellContents(appender); tableRenderer.closeHeaderCell(appender); } protected void renderDataCell(AbstractRenderAppender appender) throws IOException, JspException { + DataGridModel dataGridModel = DataGridUtil.getDataGridModel(getJspContext()); assert dataGridModel != null; @@ -476,13 +518,13 @@ _tdState.styleClass = dataGridModel.getCssPolicy().getDataCellClass(); /* todo: this needs to run in order to cause the nested parameter / attribute / etc tags to do their work */ - /* this could be faster -- would be nice to have the sub-tag *ask* to do this rather than always do it */ + /* hopefully, the container optimizes this so that if the JspFragment is empty, the invocation is cheap */ JspFragment fragment = getJspBody(); StringWriter sw = new StringWriter(); - String bodyContent = null; if (fragment != null) { fragment.invoke(sw); - bodyContent = sw.toString(); + /* ignore the return value */ + sw.toString(); } tableRenderer.openTableCell(_tdState, appender); @@ -490,6 +532,7 @@ tableRenderer.closeTableCell(appender); } + /* todo: support rendering sort / filter links */ protected void renderHeaderCellContents(AbstractRenderAppender appender) throws IOException, JspException { @@ -501,29 +544,43 @@ bodyContent = sw.toString(); } - if (getHeaderText() != null) - appender.append(getHeaderText()); - else if (bodyContent != null) - appender.append(bodyContent); - else renderEmptyHeaderCell(appender); + _headerCellModel.setDataGridModel(DataGridUtil.getDataGridModel(getJspContext())); + _headerCellModel.setColumnsModel(DataGridUtil.getColumnsModel(getJspContext())); + _headerCellModel.setBodyContent(bodyContent); + _headerCellModel.setHeaderText(getHeaderText()); + + if(_headerCellModel.isDisableSortRendering()) + DEFAULT_HEADER_RENDERER.decorate(getJspContext(), appender, _headerCellModel); + else SORTED_HEADER_RENDERER.decorate(getJspContext(), appender, _headerCellModel); } protected abstract void renderDataCellContents(AbstractRenderAppender appender); + protected void applyAttributes() + throws JspException { + super.applyAttributes(); + + if(_headerCellModel.isSortable()) { + if(_headerCellModel.getSortExpression() == null) + throw new JspException("Can not enable sorting on a column with a null sort expression"); + } + } + private void addStateAttribute(AbstractHtmlState state, String name, String value, String facet) + throws JspException { boolean error = false; // validate the name attribute, in the case of an error simply return. if (name == null || name.length() <= 0) { String s = Bundle.getString("Tags_AttributeNameNotSet"); - throw new RuntimeException(s); + throw new JspException(s); } // it's not legal to set the id or name attributes this way if (name != null && (name.equals(HtmlConstants.ID) || name.equals(HtmlConstants.NAME))) { String s = Bundle.getString("Tags_AttributeMayNotBeSet", new Object[]{name}); - throw new RuntimeException(s); + throw new JspException(s); } if (error) return; Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AnchorColumn.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AnchorColumn.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AnchorColumn.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AnchorColumn.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AnchorColumn.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AnchorColumn.java Wed Dec 29 19:01:25 2004 @@ -18,23 +18,16 @@ package org.apache.beehive.netui.tags.databinding.datagrid; import javax.servlet.jsp.JspException; -import javax.servlet.jsp.PageContext; -import javax.servlet.http.HttpServletRequest; -import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; -import org.apache.beehive.netui.databinding.datagrid.util.JspUtil; +import org.apache.beehive.netui.databinding.datagrid.model.cell.AnchorCellModel; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.AnchorCellModel; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.AnchorCellDecorator; import org.apache.beehive.netui.tags.html.URLParams; -import org.apache.beehive.netui.tags.rendering.AnchorTag; import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; -import org.apache.beehive.netui.tags.rendering.SpanTag; -import org.apache.beehive.netui.tags.rendering.TagRenderingBase; -import org.apache.beehive.netui.util.logging.Logger; import org.apache.beehive.netui.util.ParamHelper; -import java.net.URISyntaxException; -import java.util.HashMap; - /** * @netui:tag name="anchorColumn" * description="Renders a column of anchors in a NetUI data grid" @@ -46,15 +39,9 @@ extends AbstractHtmlColumn implements URLParams { - private static final Logger _logger = Logger.getInstance(AnchorColumn.class); - - private String _value = null; - private String _href = null; - private String _scopeId = null; - private String _action = null; - private HashMap _params = null; + private static final AnchorCellDecorator DECORATOR = new AnchorCellDecorator(); - private AnchorTag.State _anchorState = new AnchorTag.State(); + private AnchorCellModel _anchorCellModel = new AnchorCellModel(); public String getTagName() { return "AnchorColumn"; @@ -67,21 +54,21 @@ * @netui:attribute required="false" rtexprvalue="true" */ public void setHref(String href) { - _href = href; + _anchorCellModel.setHref(href); } /** * @netui:attribute required="false" */ - public void setScope(String scope) { - _scopeId = scope; + public void setScope(String scopeId) { + _anchorCellModel.setScopeId(scopeId); } /** * @netui:attribute required="true" rtexprvalue="true" */ public void setValue(String value) { - _value = value; + _anchorCellModel.setValue(value); } /** @@ -89,58 +76,33 @@ * @netui.tldx:attribute category="general" reftype="netui-action-url" */ public void setAction(String action) { - _action = action; + _anchorCellModel.setAction((action)); } public void addParameter(String name, Object value) - throws JspException { - if (_params == null) - _params = new HashMap(); + throws JspException { - ParamHelper.addParam(_params, name, value); + ParamHelper.addParam(_anchorCellModel.getParams(), name, value); } protected void applyAttributes() throws JspException { super.applyAttributes(); - if (_action != null && _href != null) - throw new JspException("Unable to create AnchorColumnModel. The 'action' and 'href' attributes can not both be set."); + if (_anchorCellModel.getAction() != null && _anchorCellModel.getHref() != null) + throw new JspException("Unable to create AnchorCellModel. The 'action' and 'href' attributes can not both be set."); } protected AbstractHtmlState internalGetHtmlState() { - return _anchorState; + return _anchorCellModel.getAnchorState(); } protected void renderDataCellContents(AbstractRenderAppender appender) { + DECORATOR.decorate(getJspContext(), appender, _anchorCellModel); + } - HttpServletRequest request = (HttpServletRequest)((PageContext)getJspContext()).getRequest(); - - SpanTag.State spanState = new SpanTag.State(); - AnchorTag.State anchorState = _anchorState; - - DataGridModel dgm = DataGridUtil.getDataGridModel(getJspContext()); - assert dgm != null; - - String url = null; - try { - url = JspUtil.createURL(_href, _action, null, _scopeId, _params, dgm.getJspContext()); - } catch (URISyntaxException mue) { - /* todo: real, tag based error reporting */ - if (_logger.isErrorEnabled()) - _logger.error("Exception creating URL with href " + _href + " action " + _action, mue); - } - - anchorState.href = url; - - TagRenderingBase anchorTag = TagRenderingBase.Factory.getRendering(TagRenderingBase.ANCHOR_TAG, request); - TagRenderingBase spanTag = TagRenderingBase.Factory.getRendering(TagRenderingBase.SPAN_TAG, request); - - anchorTag.doStartTag(appender, anchorState); - spanTag.doStartTag(appender, spanState); - appender.append(_value); - spanTag.doEndTag(appender); - anchorTag.doEndTag(appender); + protected ColumnModel internalGetColumnModel() { + return _anchorCellModel; } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Columns.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Columns.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Columns.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Columns.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Columns.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Columns.java Wed Dec 29 19:01:25 2004 @@ -26,7 +26,6 @@ import org.apache.beehive.netui.databinding.datagrid.model.ColumnsModel; import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; import org.apache.beehive.netui.databinding.datagrid.model.StylePolicy; -import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; import org.apache.beehive.netui.databinding.datagrid.rendering.TableRenderer; import org.apache.beehive.netui.tags.AbstractSimpleTag; import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; @@ -45,8 +44,6 @@ public class Columns extends AbstractSimpleTag { - static final String COLUMNS_MODEL_KEY = "columns"; - public String getTagName() { return "Columns"; } @@ -74,7 +71,7 @@ ColumnsModel columnsModel = new ColumnsModel(dataGridModel); assert columnsModel != null; - jspContext.setAttribute(COLUMNS_MODEL_KEY, columnsModel); + DataGridUtil.putColumnsModel(jspContext, columnsModel); StringBuilder content = new StringBuilder(); AbstractRenderAppender appender = new StringBuilderRenderAppender(content); @@ -94,7 +91,7 @@ { sw = new StringWriter(); TrTag.State trState = new TrTag.State(); - initDataRowStyle(trState, dataGridModel); + setupDataRowStyle(trState, dataGridModel); tableRenderer.openTableRow(trState, appender); dataGridModel.nextDataItem(); fragment.invoke(sw); @@ -104,12 +101,12 @@ columnsModel.setRenderState(ColumnsModel.NO_RENDER_STATE); - jspContext.removeAttribute(COLUMNS_MODEL_KEY); + DataGridUtil.removeColumnsModel(getJspContext()); jspContext.getOut().write(content.toString()); } } - private final void initDataRowStyle(TrTag.State state, DataGridModel dataGridModel) { + private final void setupDataRowStyle(TrTag.State state, DataGridModel dataGridModel) { assert state != null; assert dataGridModel != null; Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ConfigurePager.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ConfigurePager.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ConfigurePager.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ConfigurePager.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ConfigurePager.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ConfigurePager.java Wed Dec 29 19:01:25 2004 @@ -21,6 +21,7 @@ import org.apache.beehive.netui.databinding.datagrid.model.PagerModel; import org.apache.beehive.netui.databinding.datagrid.rendering.IPagerRenderer; import org.apache.beehive.netui.databinding.datagrid.rendering.impl.FirstPreviousNextLastPagerRenderer; +import org.apache.beehive.netui.databinding.datagrid.rendering.impl.FirstPreviousNextLastPagerRenderer; import org.apache.beehive.netui.databinding.datagrid.rendering.impl.PreviousNextPagerRenderer; import org.apache.beehive.netui.tags.AbstractSimpleTag; import org.apache.beehive.netui.util.logging.Logger; 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&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java&r2=123694 ============================================================================== --- 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 Wed Dec 29 19:01:25 2004 @@ -33,15 +33,14 @@ import org.apache.beehive.netui.databinding.datagrid.model.impl.EmptyStylePolicy; import org.apache.beehive.netui.databinding.datagrid.util.PagedDataSet; import org.apache.beehive.netui.databinding.datagrid.rendering.TableRenderer; +import org.apache.beehive.netui.databinding.datagrid.rendering.TableRenderer; +import org.apache.beehive.netui.databinding.datagrid.services.DataGridStateService; import org.apache.beehive.netui.script.common.IDataAccessProvider; import org.apache.beehive.netui.script.common.DataAccessProviderStack; import org.apache.beehive.netui.tags.ExpressionHandling; import org.apache.beehive.netui.tags.AbstractSimpleTag; import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; -import org.apache.beehive.netui.tags.rendering.TableTag; -import org.apache.beehive.netui.tags.rendering.TrTag; -import org.apache.beehive.netui.util.logging.Logger; import org.apache.beehive.netui.util.iterator.IteratorFactory; /** @@ -55,10 +54,6 @@ extends AbstractSimpleTag implements IDataAccessProvider { - private static final Logger _logger = Logger.getInstance(DataGrid.class); - - static final String DATA_GRID_MODEL_KEY = "dataGrid"; - private static final String DEFAULT_STYLE_POLICY_VALUE = "default"; private static final String NO_STYLE_POLICY_VALUE = "none"; private static final StylePolicy DEFAULT_STYLE_POLICY = new DefaultStylePolicy(); @@ -70,6 +65,7 @@ private String _styleClassPrefix = null; private String _dataSource = null; private DataGridModel _gridModel = null; + private DataGridStateService _dataGridStateService = null; public String getTagName() { return "DataGrid"; @@ -111,6 +107,7 @@ _disableDefaultPager = disableDefaultPager; } + /* todo: should this be wrapped in try / finally so that the PageContext gets cleaned up correctly? */ public void doTag() throws JspException, IOException { @@ -136,89 +133,85 @@ TableRenderer tableRenderer = new TableRenderer(request, stylePolicy); _gridModel = new DataGridModel(getJspContext(), _name, dataSet); + if(_dataGridStateService != null) + _gridModel.setDataGridStateService(_dataGridStateService); + _gridModel.setCssPolicy(stylePolicy); _gridModel.setTableRenderer(tableRenderer); JspFragment fragment = getJspBody(); - if (fragment == null) + if (fragment != null) { - cleanup(); - return; - } - StringBuilder builder = new StringBuilder(2048); - AbstractRenderAppender appender = new StringBuilderRenderAppender(builder); + StringBuilder builder = new StringBuilder(2048); + AbstractRenderAppender appender = new StringBuilderRenderAppender(builder); - /* todo: optimize -- this doesn't need to happen when the data set is empty */ - DataAccessProviderStack.addDataAccessProvider(this, getJspContext()); - getJspContext().setAttribute(DATA_GRID_MODEL_KEY, _gridModel); - - /* - 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: should you be able to turn this off for perf? - */ - StringWriter sw = new StringWriter(); - fragment.invoke(sw); - - if(_gridModel.getPagerModel() == null) - _gridModel.setPagerModel(new PagerModel(_gridModel)); - - /* - now that the model objects have been initialized, it's time to start rendering - */ - _gridModel.beforeRender(); - _gridModel.setRenderState(DataGridModel.START_RENDER_STATE); - - if (!_disableDefaultPager) - _gridModel.renderPager(appender); - - tableRenderer.openTable(null, appender); - - /* render the caption */ - _gridModel.setRenderState(DataGridModel.CAPTION_RENDER_STATE); - sw = new StringWriter(); - fragment.invoke(sw); - String caption = sw.toString(); - if (caption != null && !caption.trim().equals("")) { - tableRenderer.openCaption(appender); - appender.append(caption); - tableRenderer.closeCaption(appender); - } + /* todo: optimize -- this doesn't need to happen when the data set is empty */ + DataAccessProviderStack.addDataAccessProvider(this, getJspContext()); + DataGridUtil.putDataGridModel(getJspContext(), _gridModel); + + /* + 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: should you be able to turn this off for perf? + */ + StringWriter sw = new StringWriter(); + fragment.invoke(sw); + + if(_gridModel.getPagerModel() == null) + _gridModel.setPagerModel(new PagerModel(_gridModel)); + + /* + now that the model objects have been initialized, it's time to start rendering + */ + _gridModel.beforeRender(); + _gridModel.setRenderState(DataGridModel.START_RENDER_STATE); + + if (!_disableDefaultPager) + _gridModel.renderPager(appender); + + tableRenderer.openTable(null, appender); + + /* render the caption */ + _gridModel.setRenderState(DataGridModel.CAPTION_RENDER_STATE); + sw = new StringWriter(); + fragment.invoke(sw); + String caption = sw.toString(); + if (caption != null && !caption.trim().equals("")) { + tableRenderer.openCaption(appender); + appender.append(caption); + tableRenderer.closeCaption(appender); + } + + /* render the grid rows (header and data) */ + _gridModel.setRenderState(DataGridModel.GRID_RENDER_STATE); + sw = new StringWriter(); + fragment.invoke(sw); + appender.append(sw.toString()); + + /* render the footer */ + _gridModel.setRenderState(DataGridModel.FOOTER_RENDER_STATE); + sw = new StringWriter(); + fragment.invoke(sw); + String footer = sw.toString(); + String trimmed = footer.trim(); + if (footer != null && !trimmed.trim().equals("")) { + tableRenderer.openFooterRow(null, appender); + appender.append(footer); + tableRenderer.closeFooterRow(appender); + } - /* render the grid rows (header and data) */ - _gridModel.setRenderState(DataGridModel.GRID_RENDER_STATE); - sw = new StringWriter(); - fragment.invoke(sw); - appender.append(sw.toString()); - - /* render the footer */ - _gridModel.setRenderState(DataGridModel.FOOTER_RENDER_STATE); - sw = new StringWriter(); - fragment.invoke(sw); - String footer = sw.toString(); - String trimmed = footer.trim(); - if (footer != null && !trimmed.trim().equals("")) { - tableRenderer.openFooterRow(null, appender); - appender.append(footer); - tableRenderer.closeFooterRow(appender); - } + tableRenderer.closeTable(appender); - tableRenderer.closeTable(appender); + _gridModel.setRenderState(DataGridModel.END_RENDER_STATE); - _gridModel.setRenderState(DataGridModel.END_RENDER_STATE); - - write(builder.toString()); - - cleanup(); - } + write(builder.toString()); + } - private void cleanup() - { DataAccessProviderStack.removeDataAccessProvider(getJspContext()); - getJspContext().removeAttribute(DATA_GRID_MODEL_KEY); + DataGridUtil.removeDataGridModel(getJspContext()); } /* =========================================================== @@ -232,8 +225,6 @@ } public Object getCurrentItem() { - if (_logger.isDebugEnabled()) _logger.debug("current item: " + _gridModel.getCurrentItem()); - return _gridModel.getCurrentItem(); } @@ -245,9 +236,8 @@ return "{" + _dataSource + "}"; } + /* todo: seems that this should be done via the stack of DAPs in the PageContext */ public IDataAccessProvider getProviderParent() { - IDataAccessProvider dap = - (IDataAccessProvider) SimpleTagSupport.findAncestorWithClass(this, IDataAccessProvider.class); - return dap; + 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&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGridUtil.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGridUtil.java&r2=123694 ============================================================================== --- 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 Wed Dec 29 19:01:25 2004 @@ -17,30 +17,60 @@ */ package org.apache.beehive.netui.tags.databinding.datagrid; +import javax.servlet.jsp.JspContext; + import org.apache.beehive.netui.databinding.datagrid.model.DataGridModel; import org.apache.beehive.netui.databinding.datagrid.model.ColumnsModel; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; -import javax.servlet.jsp.JspContext; +/* todo: need to provide add / remove methods here so that the data model and JspContext interactions are captured in a single location */ +/** + * + */ public class DataGridUtil { - private DataGridUtil() {} + private static final String DATA_GRID_MODEL_KEY = "dataGrid"; + private static final String COLUMNS_MODEL_KEY = "columns"; + private static final String COLUMN_MODEL_KEY = "column"; - public static final DataGridModel getDataGridModel(JspContext jspContext) - { - Object model = jspContext.getAttribute(DataGrid.DATA_GRID_MODEL_KEY); + private DataGridUtil() { + } + public static final DataGridModel getDataGridModel(JspContext jspContext) { + Object model = jspContext.getAttribute(DATA_GRID_MODEL_KEY); assert model != null ? model instanceof DataGridModel : true; - return (DataGridModel)model; } - public static final ColumnsModel getColumnsModel(JspContext jspContext) - { - Object model = jspContext.getAttribute(Columns.COLUMNS_MODEL_KEY); + public static final void putDataGridModel(JspContext jspContext, DataGridModel dataGridModel) { + jspContext.setAttribute(DATA_GRID_MODEL_KEY, dataGridModel); + } + + public static final void removeDataGridModel(JspContext jspContext) { + jspContext.removeAttribute(DATA_GRID_MODEL_KEY); + } + public static final ColumnsModel getColumnsModel(JspContext jspContext) { + Object model = jspContext.getAttribute(COLUMNS_MODEL_KEY); assert model != null ? model instanceof ColumnsModel : true; + return (ColumnsModel) model; + } + + public static final void putColumnsModel(JspContext jspContext, ColumnsModel columnsModel) { + jspContext.setAttribute(COLUMNS_MODEL_KEY, columnsModel); + } + + public static final void removeColumnsModel(JspContext jspContext) { + jspContext.removeAttribute(COLUMNS_MODEL_KEY); + } + + public static final void putColumnModel(JspContext jspContext, ColumnModel columnModel) { + jspContext.setAttribute(COLUMN_MODEL_KEY, columnModel); + } - return (ColumnsModel)model; + public static final void removeColumnModel(JspContext jspContext) { + assert jspContext.getAttribute(COLUMN_MODEL_KEY) != null : "Did not find a ColumnModel under the key " + COLUMN_MODEL_KEY; + jspContext.removeAttribute(COLUMN_MODEL_KEY); } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ImageColumn.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ImageColumn.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ImageColumn.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ImageColumn.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ImageColumn.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/ImageColumn.java Wed Dec 29 19:01:25 2004 @@ -17,15 +17,13 @@ */ package org.apache.beehive.netui.tags.databinding.datagrid; +import org.apache.beehive.netui.databinding.datagrid.model.cell.ImageCellModel; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.ImageCellDecorator; import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; -import org.apache.beehive.netui.tags.rendering.ImageTag; import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; -import org.apache.beehive.netui.tags.rendering.TagRenderingBase; import org.apache.beehive.netui.tags.html.HtmlConstants; -import javax.servlet.jsp.PageContext; -import javax.servlet.http.HttpServletRequest; - /** * * @netui:tag name="imageColumn" description="Renders a column of images in a NetUI data grid" body-content="scriptless" @@ -35,7 +33,9 @@ public class ImageColumn extends AbstractHtmlColumn { - private ImageTag.State _imageState = null; + private static final ImageCellDecorator DECORATOR = new ImageCellDecorator(); + + private ImageCellModel _imageColumnModel = null; /** * @jsptagref.attributedescription The source of the image to display. @@ -45,21 +45,21 @@ * @netui.tldx:attribute propertyclass="workshop.jspdesigner.properties.URIPropertyClass" reftype="img-url" */ public void setSrc(String src) { - internalGetImageState().src = src; + _imageColumnModel.getImageState().src = src; } /** * @netui:attribute required="false" rtexprvalue="true" */ public void setAlign(String align) { - internalGetImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.ALIGN, align); + _imageColumnModel.getImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.ALIGN, align); } /** * @netui:attribute required="false" rtexprvalue="true" */ public void setHspace(String hspace) { - internalGetImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.HSPACE, hspace); + _imageColumnModel.getImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.HSPACE, hspace); } /** @@ -69,14 +69,14 @@ * @netui:attribute required="false" rtexprvalue="true" */ public void setVspace(String vspace) { - internalGetImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.VSPACE, vspace); + _imageColumnModel.getImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.VSPACE, vspace); } /** * @netui:attribute required="false" rtexprvalue="true" */ public void setBorder(String border) { - internalGetImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.BORDER, border); + _imageColumnModel.getImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.BORDER, border); } /** @@ -86,7 +86,7 @@ * @netui:attribute required="false" rtexprvalue="true" */ public void setHeight(String height) { - internalGetImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.HEIGHT, height); + _imageColumnModel.getImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.HEIGHT, height); } /** @@ -96,7 +96,7 @@ * @netui:attribute required="false" rtexprvalue="true" */ public void setWidth(String width) { - internalGetImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.WIDTH, width); + _imageColumnModel.getImageState().registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.WIDTH, width); } public String getTagName() @@ -106,23 +106,20 @@ public void renderDataCellContents(AbstractRenderAppender appender) { - HttpServletRequest request = (HttpServletRequest)((PageContext)getJspContext()).getRequest(); - - TagRenderingBase br = TagRenderingBase.Factory.getRendering(TagRenderingBase.IMAGE_TAG, request); - br.doStartTag(appender, _imageState); - br.doEndTag(appender); + DECORATOR.decorate(getJspContext(), appender, _imageColumnModel); } - private ImageTag.State internalGetImageState() { - if(_imageState == null) - _imageState = new ImageTag.State(); - - return _imageState; + private AbstractHtmlState internalGetImageState() { + return _imageColumnModel.getImageState(); } protected AbstractHtmlState internalGetHtmlState() { return internalGetImageState(); + } + + protected ColumnModel internalGetColumnModel() { + return _imageColumnModel; } } Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/LiteralColumn.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/LiteralColumn.java?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/LiteralColumn.java&r1=123693&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/LiteralColumn.java&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/LiteralColumn.java (original) +++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/LiteralColumn.java Wed Dec 29 19:01:25 2004 @@ -21,6 +21,10 @@ import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; import org.apache.beehive.netui.tags.rendering.TagRenderingBase; +import org.apache.beehive.netui.databinding.datagrid.model.cell.LiteralCellModel; +import org.apache.beehive.netui.databinding.datagrid.model.ColumnModel; +import org.apache.beehive.netui.databinding.datagrid.model.cell.LiteralCellModel; +import org.apache.beehive.netui.databinding.datagrid.rendering.cell.LiteralCellDecorator; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; @@ -37,42 +41,31 @@ public class LiteralColumn extends AbstractHtmlColumn { - private static final SpanTag.State DEFAULT_SPAN_STATE = new SpanTag.State(); + private static final LiteralCellDecorator DECORATOR = new LiteralCellDecorator(); - private String _value = null; - private SpanTag.State _spanState = new SpanTag.State(); + private LiteralCellModel _literalColumnModel = new LiteralCellModel(); public String getTagName() { - return "LiteralColumnModel"; + return "LiteralCellModel"; } /** * @netui:attribute required="true" rtexprvalue="true" */ public void setValue(String value) { - _value = value; - } - - protected void applyAttributes() - throws JspException { - super.applyAttributes(); - - /* todo: need to apply the <span> HTML state information to the ColumnModel here */ + _literalColumnModel.setValue(value); } protected void renderDataCellContents(AbstractRenderAppender appender) { - HttpServletRequest request = (HttpServletRequest)((PageContext)getJspContext()).getRequest(); - TagRenderingBase span = TagRenderingBase.Factory.getRendering(TagRenderingBase.SPAN_TAG, request); - - String formatted = formatText(_value); - - span.doStartTag(appender, _spanState != null ? _spanState : DEFAULT_SPAN_STATE); - appender.append(formatted); - span.doEndTag(appender); + DECORATOR.decorate(getJspContext(), appender, _literalColumnModel); } protected AbstractHtmlState internalGetHtmlState() { - return _spanState; + return _literalColumnModel.getSpanState(); + } + + protected ColumnModel internalGetColumnModel() { + return _literalColumnModel; } } Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/Controller.jpf Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/Controller.jpf?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/Controller.jpf Wed Dec 29 19:01:25 2004 @@ -0,0 +1,51 @@ +/* + * 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 databinding.datagrid.simplesort; + +import org.apache.beehive.netui.pageflow.Forward; +import org.apache.beehive.netui.pageflow.PageFlowController; +import org.apache.beehive.netui.pageflow.annotations.Jpf; + +/** + * + */ [EMAIL PROTECTED] +public class Controller + extends PageFlowController { + + @Jpf.Action( + forwards = { + @Jpf.Forward( + name = "success", + path = "index.jsp") + }) + public Forward begin() { + return new Forward("success"); + } + + @Jpf.Action( + forwards = { + @Jpf.Forward( + name = "success", + path = "index.jsp") + }) + public Forward sort() { + /* todo: at some point, need to start doing some sorting here */ + return new Forward("success"); + } +} Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/index.jsp Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/index.jsp?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/simplesort/index.jsp Wed Dec 29 19:01:25 2004 @@ -0,0 +1,27 @@ +<%@ page language="java" contentType="text/html;charset=UTF-8"%> +<%@ taglib uri="beehive-netui-tags-html.tld" prefix="netui"%> +<%@ taglib uri="beehive-netui-tags-databinding.tld" prefix="netui-data"%> +<%@ taglib uri="beehive-netui-tags-template.tld" prefix="netui-template"%> +<%@ 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/> +<netui-data:dataGrid dataSource="pageScope.stocks" name="portfolio"> + <netui-data:columns> + <netui-data:literalColumn headerText="Symbol" value="${container.item.symbol}" sortExpression="symbol" sortAction="sort"/> + <netui-data:literalColumn headerText="Price" value="${container.item.price}" sortExpression="price"/> + <netui-data:anchorColumn headerText="Web" href="${container.item.web}" value="${container.item.name}" sortExpression="web"> + <netui:parameter name="rowid" value="${container.index}"/> + <netui:parameter name="symbol" value="${container.item.symbol}"/> + </netui-data:anchorColumn> + </netui-data:columns> +</netui-data:dataGrid> +<br/> +<netui:anchor href="index.jsp">Reset</netui:anchor> +<br/> + </p> + </netui-template:section> +</netui-template:template> Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/back.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/back.gif?view=auto&rev=123693 ============================================================================== Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/cancel.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/cancel.gif?view=auto&rev=123693 ============================================================================== Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/delete.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/delete.gif?view=auto&rev=123693 ============================================================================== Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/details.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/details.gif?view=auto&rev=123693 ============================================================================== Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/edit.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/edit.gif?view=auto&rev=123693 ============================================================================== Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/grid.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/grid.gif?view=auto&rev=123693 ============================================================================== Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/insert.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/insert.gif?view=auto&rev=123693 ============================================================================== Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/update.gif Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/images/update.gif?view=auto&rev=123693 ============================================================================== Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&rev=123694&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=123693&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=123694 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Wed Dec 29 19:01:25 2004 @@ -2371,6 +2371,21 @@ </features> </test> <test> + <name>DataGridSimpleSort</name> + <description>DataGridSimpleSort</description> + <webapp>coreWeb</webapp> + <categories> + <category>bvt</category> + <category>drt</category> + <category>datagrid</category> + <category>databinding</category> + </categories> + <features> + <feature>Databinding</feature> + <feature>Data Grid</feature> + </features> + </test> + <test> <name>DateConverter</name> <description>Date Converter on post.</description> <webapp>coreWeb</webapp> Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridSimpleSort.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridSimpleSort.xml?view=auto&rev=123694 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridSimpleSort.xml Wed Dec 29 19:01:25 2004 @@ -0,0 +1,2828 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session"> + <ses:sessionName>DataGridSimpleSort</ses:sessionName> + <ses:tester>ekoneil</ses:tester> + <ses:startDate>29 Dec 2004, 07:29:36.853 PM MST</ses:startDate> + <ses:description>Simple test of sorting parameters in the URL. This doesn't actually *sort* any data yet -- just makes sure that the right things show up in the query params.</ses:description> + <ses:tests> + <ses:test> + <ses:testNumber>1</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/Controller.jpf</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters/> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>2</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/sort.do</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~symbol</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/Controller.jpf</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Esymbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb&netui_sort=portfolio%7Esymbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>3</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/sort.do</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-symbol</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb&netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>4</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~price</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-symbol</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7E-symbol</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Eprice"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-price&netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>5</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-price</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-symbol</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-symbol</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7E-price"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb&netui_sort=portfolio%7E-price&netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>6</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-symbol</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-price&netui_sort=portfolio%7E-symbol</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb&netui_sort=portfolio%7E-symbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>7</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/sort.do</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters/> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-symbol</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>8</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/sort.do?</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>9</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~price</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-price&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>10</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/sort.do</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~symbol</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~price</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7E-symbol&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7E-price&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>11</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/sort.do</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-symbol</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~price</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-symbol&netui_sort=portfolio%7E-price&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-symbol&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>12</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/sort.do</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~price</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7E-symbol&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-price&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>13</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-price</ses:value> + </ses:parameter> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7E-price&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-price&netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>14</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-price&netui_sort=portfolio%7Eweb</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortdown.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>15</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>netui_sort</ses:name> + <ses:value>portfolio~-web</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol&netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice&netui_sort=portfolio%7E-web"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?"><img src="/coreWeb/resources/images/sortup.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>16</ses:testNumber> + <ses:request> + <ses:protocol>HTTP</ses:protocol> + <ses:protocolVersion>1.1</ses:protocolVersion> + <ses:host>localhost</ses:host> + <ses:port>8080</ses:port> + <ses:uri>/coreWeb/databinding/datagrid/simplesort/index.jsp</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters/> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>FD390CFD67831B0E1EBAD413BFBF45E3</ses:value> + </ses:cookie> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:cookie> + </ses:cookies> + <ses:headers> + <ses:header> + <ses:name>accept</ses:name> + <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-charset</ses:name> + <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-encoding</ses:name> + <ses:value>gzip,deflate</ses:value> + </ses:header> + <ses:header> + <ses:name>accept-language</ses:name> + <ses:value>en-us,en;q=0.5</ses:value> + </ses:header> + <ses:header> + <ses:name>connection</ses:name> + <ses:value>keep-alive</ses:value> + </ses:header> + <ses:header> + <ses:name>cookie</ses:name> + <ses:value>JSESSIONID=FD390CFD67831B0E1EBAD413BFBF45E3; JSESSIONID=BRI59EcGUv52yFbTd6wc1JPayFFcRc5ZB2RvEDVDglG1srBaWr2s!-1531031622</ses:value> + </ses:header> + <ses:header> + <ses:name>host</ses:name> + <ses:value>localhost:8080</ses:value> + </ses:header> + <ses:header> + <ses:name>keep-alive</ses:name> + <ses:value>300</ses:value> + </ses:header> + <ses:header> + <ses:name>referer</ses:name> + <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7E-web</ses:value> + </ses:header> + <ses:header> + <ses:name>user-agent</ses:name> + <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> + + <head> + <title>NetUI Data Grid Samples</title> + <link rel="stylesheet" href="/coreWeb/databinding/datagrid/site/css/default.css" type="text/css"/> + </head> + <base href="http://localhost:8080/coreWeb/databinding/datagrid/simplesort/index.jsp"> + <body> + <p> + <b>Basic Data Grid</b> + <table width="100%"> + <tr><td></td></tr> + <tr><td> + + <p> + + + + +<br/> +Page 1 of 1 +<table class="datagrid"> + + +<thead> +<tr class="datagrid-header"> + <th class="datagrid-header-cell">Symbol <a href="/coreWeb/databinding/datagrid/simplesort/sort.do?netui_sort=portfolio%7Esymbol"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Price <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eprice"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + <th class="datagrid-header-cell">Web <a href="/coreWeb/databinding/datagrid/simplesort/index.jsp?netui_sort=portfolio%7Eweb"><img src="/coreWeb/resources/images/sortable.gif" border="false"></a></th> + + + +</tr></thead> + +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>BEAS</span></td> + + <td class="datagrid-data-cell"><span>14.35</span></td> + + <td class="datagrid-data-cell"><a href="http://www.bea.com?rowid=1&symbol=BEAS"><span>BEA Systems</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>CSCO</span></td> + + <td class="datagrid-data-cell"><span>19.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.cisco.com?rowid=2&symbol=CSCO"><span>Cisco Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>GE</span></td> + + <td class="datagrid-data-cell"><span>59.42</span></td> + + <td class="datagrid-data-cell"><a href="http://www.ge.com?rowid=3&symbol=GE"><span>General Electric</span></a></td> + + +</tr> +<tr class="datagrid-odd"> + <td class="datagrid-data-cell"><span>RHAT</span></td> + + <td class="datagrid-data-cell"><span>18.2</span></td> + + <td class="datagrid-data-cell"><a href="http://www.redhat.com?rowid=4&symbol=RHAT"><span>RedHat Systems</span></a></td> + + +</tr> +<tr class="datagrid-even"> + <td class="datagrid-data-cell"><span>YHOO</span></td> + + <td class="datagrid-data-cell"><span>48.16</span></td> + + <td class="datagrid-data-cell"><a href="http://www.yahoo.com?rowid=5&symbol=YHOO"><span>Yahoo Inc</span></a></td> + + +</tr> +</table> + + +<br/> +<a href="/coreWeb/databinding/datagrid/simplesort/index.jsp">Reset</a> +<br/> + </p> + + </td></tr> + </p> + <table> + <tr><td><a href="/netuiDRT/databinding/datagrid/basic/index.jsp">Home</a></td></tr> + </table> + </p> + </body> + +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + </ses:tests> + <ses:endDate>29 Dec 2004, 07:29:59.135 PM MST</ses:endDate> + <ses:testCount>16</ses:testCount> +</ses:recorderSession> \ No newline at end of file
