01: // Copyright 2007 The Apache Software Foundation
02: //
03: // Licensed under the Apache License, Version 2.0 (the "License");
04: // you may not use this file except in compliance with the License.
05: // You may obtain a copy of the License at
06: //
07: // http://www.apache.org/licenses/LICENSE-2.0
08: //
09: // Unless required by applicable law or agreed to in writing, software
10: // distributed under the License is distributed on an "AS IS" BASIS,
11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12: // See the License for the specific language governing permissions and
13: // limitations under the License.
14:
15: package org.apache.tapestry.grid;
16:
17: import org.apache.tapestry.beaneditor.PropertyModel;
18: import org.apache.tapestry.corelib.components.Grid;
19:
20: /**
21: * Defines how a {@link Grid} components (and its sub-components) gain access to the row data that
22: * is displayed on the page. In many cases, this is just a wrapper around a simple List, but the
23: * abstractions exist to support access to a large data set that is accessible in sections.
24: */
25: public interface GridDataSource {
26: /** Returns the number of rows available in the data source. */
27: int getAvailableRows();
28:
29: /**
30: * Invoked to allow the source to prepare to present values. This gives the source a chance to
31: * pre-fetch data (when appropriate) and informs the source of the desired sort order.
32: *
33: * @param startIndex
34: * the starting index to be retrieved
35: * @param endIndex
36: * the ending index to be retrieved
37: * @param sortModel
38: * the property model that defines what data will be used for sorting, or null if no
39: * sorting is required (in which case, whatever natural order is provided by the
40: * underlying data source will be used)
41: * @param ascending
42: * if true, then sort ascending, else decending
43: */
44: void prepare(int startIndex, int endIndex, PropertyModel sortModel,
45: boolean ascending);
46:
47: /** Returns the row value at the provided index. This method will be invoked in sequential order. */
48: Object getRowValue(int index);
49:
50: /**
51: * Returns the type of value in the rows, or null if not known. This value is used to create a
52: * default {@link GridDataModel} when no such model is provided.
53: *
54: * @return the row type, or null
55: */
56: Class getRowType();
57: }
|