[ 
https://issues.apache.org/jira/browse/WICKET-4802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesse Long updated WICKET-4802:
-------------------------------

    Attachment: WICKET-4802.patch

WICKET-4802.patch

Attached is my proposed patch.

Note that I have added the ...data.table.export package.

I have also made PropertyColumn implement IExportableColumn - it is a prime 
candidate for this. It does not extends AbstractExportableColumn because I'm 
trying to avoid binary incompatibility.

I have added the export functionality to the data table example in 
wicket-examples.

The reason I created this ticket was that IExportableColumn as I have 
implemented it is missing. The rest of the changes I have made are just by 
suggestion and some default implementations. I will be content if only 
IExportableColumn makes it in. (It does make sense to at least keep the 
PropertyColumn changes too).

It should be quite simple to implement Excel etc IDataExporters.
                
> 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
>         Attachments: WICKET-4802.patch
>
>
> 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