Ok.
Here is the code:

package com.eurekify.web.components.table;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.behavior.HeaderContributor;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractToolbar;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;

import com.eurekify.i18n.LocalizationHelper;
import com.eurekify.web.components.dropdown.DropDownChoiceWithAjaxIndicator;

class NumRecordsToolbar extends AbstractToolbar {
    private static final long serialVersionUID = -7038331743460229883L;

    NumRecordsToolbar(DataTable table, int initialRecordsPerPage) {
        super(table);

add(HeaderContributor.forCss("/eurekify/style/EurekifyDataTable.css"));
        WebMarkupContainer span = new WebMarkupContainer("span");
        add(span);
        span.add(new SimpleAttributeModifier("colspan", String
                .valueOf(getTable().getColumns().length)));
        span.add(getUsersPerPageSelect(initialRecordsPerPage));
        Label numOfRecordLabel = new Label("pagingLabel", new
Model(LocalizationHelper
                .getMessage("table.recordsPerPage")));
        span.add(numOfRecordLabel);
        getTable().setRowsPerPage(initialRecordsPerPage);
    }

    private List<Integer> getValuesForSelect(int initial) {
        Set<Integer> set = new HashSet<Integer>();
        set.add(10);
        set.add(20);
        set.add(50);
        set.add(500);
        set.add(initial);
        List<Integer> values = new ArrayList<Integer>(set);
        Collections.sort(values);
        return values;
    }

    private DropDownChoiceWithAjaxIndicator getUsersPerPageSelect(final int
initial) {
        final IModel pagingvalues = new AbstractReadOnlyModel() {
            private static final long serialVersionUID = 1L;

            @Override
            public Object getObject() {
                List<Integer> values = getValuesForSelect(initial);
                return values;
            }
        };
        final DropDownChoiceWithAjaxIndicator result = new
DropDownChoiceWithAjaxIndicator(
                "pagingSelect", new PropertyModel(getTable(),
"rowsPerPage"), pagingvalues,
                this);
        result.add(new AjaxFormComponentUpdatingBehavior("onchange") {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                target.addComponent(getTable());
            }
        });
        return result;
    }

    @Override
    public boolean isVisible() {
        return (getTable().getRowCount() > 10);
    }
}


And the HTML:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";
    xmlns:wicket="http://wicket.sourceforge.net/"; xml:lang="en" lang="en">
<wicket:panel>
    <tr>
        <td wicket:id="span" class="select-number-records"><label
            wicket:id="pagingLabel"> </label> <select
wicket:id="pagingSelect">
        </select></td>
    </tr>
</wicket:panel>
</html>


On Thu, Apr 17, 2008 at 1:57 PM, Maurice Marrink <[EMAIL PROTECTED]> wrote:

> Ehm, Attachments are filtered from the list :)
>
> Maurice
>
> On Thu, Apr 17, 2008 at 12:23 PM, Eyal Golan <[EMAIL PROTECTED]> wrote:
> > Hi,
> > I have made a toolbar for a DataTable that let's the user select how
> many
> > records will be in a page.
> >
> > Usage:
> > addBottomToolbar(new NumRecordsToolbar(this, rowsPerPage));
> >
> >
> > Enjoy :)
> >  --
> > Eyal Golan
> > [EMAIL PROTECTED]
> >
> > Visit: http://jvdrums.sourceforge.net/
> > ---------------------------------------------------------------------
> >  To unsubscribe, e-mail: [EMAIL PROTECTED]
> >  For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


-- 
Eyal Golan
[EMAIL PROTECTED]

Visit: http://jvdrums.sourceforge.net/

Reply via email to