You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

How to make NavigationToolbar hide paging components at limits

First create a MyDefaultDataTable by copying org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable.
This allows for us to pass our own MyNavigationToolbar. If there is a better way please let me know.

MyDefaultDataTable

 public class MyDefaultDataTable extends DataTable {
    
    public MyDefaultDataTable(String id, final List columns,
            ISortableDataProvider dataProvider, int rowsPerPage) {
        this(id, (IColumn[]) columns.toArray(new IColumn[columns.size()]),
                dataProvider, rowsPerPage);
    }

    public MyDefaultDataTable(String id, final IColumn[] columns,
            ISortableDataProvider dataProvider, int rowsPerPage) {
        super(id, columns, dataProvider, rowsPerPage);

        addTopToolbar(new MyNavigationToolbar(this));
        addTopToolbar(new HeadersToolbar(this, dataProvider));
        addBottomToolbar(new NoRecordsToolbar(this));
    }

    protected Item newRowItem(String id, int index, IModel model) {
        return new OddEvenItem(id, index, model);
    }

}

Next create MyNavigationToolbar and override the paging component creation methods.

MyNavigationToolbar

public class MyNavigationToolbar extends NavigationToolbar {
	public MyNavigationToolbar(DataTable table) {
		super(table);
	}
	@Override
	protected PagingNavigator newPagingNavigator(String navigatorId, DataTable table) {
		return new PagingNavigator(navigatorId, table) {
			@Override
			protected Link newPagingNavigationIncrementLink(String id, IPageable pageable, int increment) {
				return new PagingNavigationIncrementLink(id, pageable, increment) {
					@Override
					public boolean isVisible() {
						return !linksTo(getPage());
					}
				};
			}
			@Override
			protected Link newPagingNavigationLink(String id, IPageable pageable, int pageNumber) {
				return new PagingNavigationLink(id, pageable, pageNumber) {
					@Override
					public boolean isVisible() {
						return !linksTo(getPage());
					}
				};
			};
		};
	}
}
  • No labels