[
https://issues.apache.org/jira/browse/WICKET-4802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13473114#comment-13473114
]
Martin Grigorov commented on WICKET-4802:
-----------------------------------------
Hi Jesse,
I didn't have time to look at your proposal yet.
I just want to let you know about another implementation of your idea:
https://github.com/wicketstuff/core/tree/master/jdk-1.6-parent/wicket-poi-parent,
https://github.com/wicketstuff/core/wiki/POI.
> Standard IDataColumn
> --------------------
>
> Key: WICKET-4802
> URL: https://issues.apache.org/jira/browse/WICKET-4802
> Project: Wicket
> Issue Type: New Feature
> Components: wicket-extensions
> Affects Versions: 6.1.0
> Reporter: Jesse Long
> Priority: Minor
>
> In Igor's book he describes a way of exporting a data table to CSV. It
> requires tagging exportable columns with a interface, which allows retrieving
> of the data for the column by passing it the row model.
> I, and I'm sure many others, have implemented this functionality, and we all
> have our own CSVExportToolbar, or something similar. The problem is that each
> export implementation is checking for instances of their own hand-crafted
> IDataColumn interface. This makes it difficult for people to write libraries
> that provide columns that will be exportable across the board.
> I propose that we add a standard IDataColumn that can be used to tagging
> exportable columns, and which every CSVExportToolbar and ExcelExportToolbar
> etc can check for when determining which columns to use to export.
> Something like:
> /** does not need sort parameter, does not need to extend IColumn */
> public interface IDataColumn<R, T>
> {
> /** get data for row by passing row model, in imodel format to allow this
> method to be used for rendering in an abstract implementation. */
> IModel<T> getDataModel(IModel<R> rowModel);
> /** get column header, useful in exporting. same signature as
> AbstractColumn method */
> IModel<String> getDisplayModel();
> }
> Then an abstract implementation, where the user only needs to implement
> getDataModel()
> public abstract class AbstractDataColumn<R, S, T>
> extends AbstractColumn<R, S>
> implements IDataColumn<R, T>
> {
> // normal AbstractColumn constructors.
> protected Component createNewDisplayComponent(String componentId,
> IModel<T> dataModel)
> {
> return new Label(componentId, dataModel);
> }
> @Override
> public void populateItem(Item<ICellPopulator<R>> cellItem, String
> componentId, IModel<R> rowModel)
> {
> cellItem.add(createNewDisplayComponent(componentId,
> getDataModel(rowModel)));
> }
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira