You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Rafael Winterhalter (JIRA)" <ji...@apache.org> on 2012/09/19 12:38:07 UTC

[jira] [Updated] (WICKET-4772) DataTable API

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

Rafael Winterhalter updated WICKET-4772:
----------------------------------------

    Description: 
The DataTable API is not optimal from my point of view as its user. What I do today is that I copy-pasted most of the code in order to break the data table open a little bit since the original API does not allow me to. 
To name a tangible example:

It is impossible to update a DataTable's toolbars by Ajax dynamically since the DataView does not allow for it, i.e. adding a toolbar which has its markup ID set to true to an AjaxRequestTarget throws me an exception.

This makes it impossible to add another toolbar which must not lose its keyboard focus, in my case this is a filtering toolbar that rerenders the data table's content (which works by overriding the DataTables makeBodyContainer method and extracting the then created component) and all other (!) toolbars (which could work by overriding the addTopToolbar and addBottomToolbar methods and refreshing all toolbars but the one requesting the rerendering).

I suggest a rather simple refactorization: Make all child components of the DataTable accessible by accessor methods. By doing so, the data table can be used way more flexible. Also, the AbstractToolbar should ensure that it is wrapped in a tr/td tag which can be added to an AjaxRequestTarget, e.g. by determining the tr tag alrady inside of the DataTable HTML file and adding the AbstractToolbar directly to it. (I know this might mess up user created toolbars but on the other hand, this allows for a whole new set of Ajax-driven toolbars.)

  was:
The DataTable API is not optimal from my point of view as its user. What I do today is that I copy-pasted most of the code in order to break the data table open a little bit since the original API does not allow me to. 
To name a tangible example:

It is impossible to update a DataTable's toolbars by Ajax dynamically since the DataView does not allow for it, i.e. adding a toolbar which has its markup ID set to true to an AjaxRequestTarget throws me an exception.

This makes it impossible to add another toolbar which must not lose its keyboard focus, in my case this is a filtering toolbar that rerenders the data table's content (which works by overriding the DataTables makeBodyContainer method and extracting the then created component) and all other (!) toolbars (which could work by overriding the addTopToolbar and addBottomToolbar methods and refreshing all toolbars but the one requesting the rerendering).

I suggest a rather simple refactorization: Make all child components of the DataTable accessible by accessor methods. By doing so, the data table can be used way more flexible. Also, the AbstractToolbar should ensure that it is wrapped in a tr/td tag which can be added to an AjaxRequestTarget.

    
> DataTable API
> -------------
>
>                 Key: WICKET-4772
>                 URL: https://issues.apache.org/jira/browse/WICKET-4772
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket-extensions
>    Affects Versions: 1.5.8
>            Reporter: Rafael Winterhalter
>            Priority: Minor
>              Labels: AbstractToolbar, DataTable
>
> The DataTable API is not optimal from my point of view as its user. What I do today is that I copy-pasted most of the code in order to break the data table open a little bit since the original API does not allow me to. 
> To name a tangible example:
> It is impossible to update a DataTable's toolbars by Ajax dynamically since the DataView does not allow for it, i.e. adding a toolbar which has its markup ID set to true to an AjaxRequestTarget throws me an exception.
> This makes it impossible to add another toolbar which must not lose its keyboard focus, in my case this is a filtering toolbar that rerenders the data table's content (which works by overriding the DataTables makeBodyContainer method and extracting the then created component) and all other (!) toolbars (which could work by overriding the addTopToolbar and addBottomToolbar methods and refreshing all toolbars but the one requesting the rerendering).
> I suggest a rather simple refactorization: Make all child components of the DataTable accessible by accessor methods. By doing so, the data table can be used way more flexible. Also, the AbstractToolbar should ensure that it is wrapped in a tr/td tag which can be added to an AjaxRequestTarget, e.g. by determining the tr tag alrady inside of the DataTable HTML file and adding the AbstractToolbar directly to it. (I know this might mess up user created toolbars but on the other hand, this allows for a whole new set of Ajax-driven toolbars.)

--
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