01: /*
02: * $Id: NavigationToolbar.java 462103 2006-09-05 22:32:17Z ehillenius $ $Revision: 462103 $ $Date: 2006-09-06 00:32:17 +0200 (Wed, 06 Sep 2006) $
03: *
04: * ==============================================================================
05: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
06: * use this file except in compliance with the License. You may obtain a copy of
07: * the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14: * License for the specific language governing permissions and limitations under
15: * the License.
16: */
17: package wicket.extensions.markup.html.repeater.data.table;
18:
19: import wicket.AttributeModifier;
20: import wicket.markup.html.WebComponent;
21: import wicket.markup.html.WebMarkupContainer;
22: import wicket.markup.html.navigation.paging.PagingNavigator;
23: import wicket.model.Model;
24:
25: /**
26: * Toolbar that displays links used to navigate the pages of the datatable as
27: * well as a message about which rows are being displayed and their total number
28: * in the data table.
29: *
30: * @author Igor Vaynberg (ivaynberg)
31: *
32: */
33: public class NavigationToolbar extends AbstractToolbar {
34: private static final long serialVersionUID = 1L;
35:
36: private DataTable table;
37:
38: /**
39: * Constructor
40: *
41: * @param table
42: * data table this toolbar will be attached to
43: */
44: public NavigationToolbar(final DataTable table) {
45: super (table);
46: this .table = table;
47:
48: WebMarkupContainer span = new WebMarkupContainer("span");
49: add(span);
50: span.add(new AttributeModifier("colspan", true, new Model(
51: String.valueOf(table.getColumns().length))));
52:
53: span.add(newPagingNavigator("navigator", table));
54: span.add(newNavigatorLabel("navigatorLabel", table));
55: }
56:
57: /**
58: * Factory method used to create the paging navigator that will be used by
59: * the datatable
60: *
61: * @param navigatorId
62: * component id the navigator should be created with
63: * @param table
64: * dataview used by datatable
65: * @return paging navigator that will be used to navigate the data table
66: */
67: protected PagingNavigator newPagingNavigator(String navigatorId,
68: final DataTable table) {
69: return new PagingNavigator(navigatorId, table);
70: }
71:
72: /**
73: * Factory method used to create the navigator label that will be used by
74: * the datatable
75: *
76: * @param navigatorId
77: * component id navigator label should be created with
78: * @param table
79: * dataview used by datatable
80: * @return navigator label that will be used to navigate the data table
81: *
82: */
83: protected WebComponent newNavigatorLabel(String navigatorId,
84: final DataTable table) {
85: return new NavigatorLabel(navigatorId, table);
86: }
87:
88: /**
89: * Hides this toolbar when no rows are visible or number of rows is set to Integer.MAX_VALUE
90: *
91: * @see wicket.Component#isVisible()
92: */
93: public boolean isVisible() {
94: return table.getRowCount() > 0
95: && table.getRowsPerPage() < Integer.MAX_VALUE;
96: }
97: }
|