[ 
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

Reply via email to