de.alpharogroup.wicket.data.provider.examples.dataview.SortableDataViewPanel.java Source code

Java tutorial

Introduction

Here is the source code for de.alpharogroup.wicket.data.provider.examples.dataview.SortableDataViewPanel.java

Source

/**
 * Copyright (C) 2010 Asterios Raptis
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package de.alpharogroup.wicket.data.provider.examples.dataview;

import java.util.List;

import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByBorder;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.NavigatorLabel;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.model.CompoundPropertyModel;

import de.alpharogroup.wicket.data.provider.examples.data.provider.Person;
import de.alpharogroup.wicket.data.provider.examples.data.provider.PersonDatabaseManager;
import de.alpharogroup.wicket.data.provider.examples.data.provider.SortableFilterPersonDataProvider;

/**
 * The Class SortableDataViewPanel.
 *
 * @author admin
 */
public class SortableDataViewPanel extends Panel {

    /**
     * The serialVersionUID.
     */
    private static final long serialVersionUID = 1L;

    /**
     * Instantiates a new sortable data view panel.
     *
     * @param id
     *            the id
     */
    public SortableDataViewPanel(final String id) {
        super(id);
        final List<Person> persons = PersonDatabaseManager.getInstance().getPersons();

        final SortableFilterPersonDataProvider dataProvider = new SortableFilterPersonDataProvider(persons) {

            private static final long serialVersionUID = 1L;

            @Override
            public List<Person> getData() {
                return PersonDatabaseManager.getInstance().getPersons();
            }
        };

        dataProvider.setSort("firstname", SortOrder.ASCENDING);

        final DataView<Person> dataView = new DataView<Person>("dataView", dataProvider) {
            /**
             * The serialVersionUID.
             */
            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(final Item<Person> item) {
                item.setDefaultModel(new CompoundPropertyModel<Person>(item.getModel()));
                item.add(new Label("firstname"));
                item.add(new Label("lastname"));
                item.add(new Label("dateOfBirth"));
            }
        };

        dataView.setItemsPerPage(10);
        add(dataView);

        add(new OrderByBorder<String>("orderByFirstname", "firstname", dataProvider));
        add(new OrderByBorder<String>("orderByLastname", "lastname", dataProvider));
        add(new OrderByBorder<String>("orderByDateOfBirth", "dateOfBirth", dataProvider));
        add(new NavigatorLabel("label", dataView));
        add(new PagingNavigator("topNavigator", dataView));
        add(new PagingNavigator("footernavigator", dataView));
    }
}