001: /*
002: * $Id: SortableTableHeadersPage.java 458776 2006-01-19 20:34:20Z jdonnerstag $
003: * $Revision: 458776 $ $Date: 2006-01-19 21:34:20 +0100 (Thu, 19 Jan 2006) $
004: *
005: * ==================================================================== Licensed
006: * under the Apache License, Version 2.0 (the "License"); you may not use this
007: * file except in compliance with the License. You may obtain a copy of the
008: * License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing, software
013: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
014: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
015: * License for the specific language governing permissions and limitations under
016: * the License.
017: */
018: package wicket.examples.displaytag.list;
019:
020: import java.io.Serializable;
021: import java.util.ArrayList;
022: import java.util.List;
023:
024: import wicket.PageParameters;
025: import wicket.markup.html.WebPage;
026: import wicket.markup.html.basic.Label;
027: import wicket.markup.html.list.ListItem;
028: import wicket.markup.html.list.ListView;
029: import wicket.model.PropertyModel;
030:
031: /**
032: * Dummy page used for resource testing.
033: */
034: public class SortableTableHeadersPage extends WebPage {
035:
036: /**
037: * Construct.
038: *
039: * @param parameters
040: * page parameters.
041: */
042: public SortableTableHeadersPage(final PageParameters parameters) {
043: super ();
044:
045: List list = new ArrayList();
046: addUser(list, 1, "Name-aaa", "mail-1");
047: addUser(list, 2, "Name-bbb", "mail-2");
048: addUser(list, 3, "Name-ccc", "mail-3");
049: addUser(list, 4, "Name-ddd", "mail-4");
050: addUser(list, 5, "Name-eee", "mail-5");
051: addUser(list, 6, "Name-aba", "mail-6");
052: addUser(list, 7, "Name-bab", "mail-7");
053: addUser(list, 8, "Name-dca", "mail-8");
054: addUser(list, 9, "Name-eaa", "mail-9");
055:
056: ListView table = new ListView("table", list) {
057: protected void populateItem(ListItem listItem) {
058: User user = (User) listItem.getModelObject();
059: listItem.add(new Label("id", new PropertyModel(user,
060: "id")));
061: listItem.add(new Label("name", new PropertyModel(user,
062: "name")));
063: listItem.add(new Label("email", new PropertyModel(user,
064: "email")));
065: }
066: };
067:
068: add(table);
069: add(new SortableListViewHeaders("header", table) {
070: /*
071: * If object does not support equals()
072: */
073: protected int compareTo(SortableListViewHeader header,
074: Object o1, Object o2) {
075: if (header.getId().equals("id")) {
076: return ((User) o1).id - ((User) o2).id;
077: }
078:
079: return super .compareTo(header, o1, o2);
080: }
081:
082: /**
083: * Define how to do sorting
084: *
085: * @see SortableListViewHeaders#getObjectToCompare(SortableListViewHeader,
086: * java.lang.Object)
087: */
088: protected Comparable getObjectToCompare(
089: final SortableListViewHeader header,
090: final Object object) {
091: final String name = header.getId();
092: if (name.equals("name")) {
093: return ((User) object).name;
094: }
095: if (name.equals("email")) {
096: return ((User) object).email;
097: }
098:
099: return "";
100: }
101: });
102:
103: }
104:
105: private void addUser(List data, int id, String name, String email) {
106: User user = new User();
107: user.setId(id);
108: user.setName(name);
109: user.setEmail(email);
110: data.add(user);
111: }
112:
113: private class User implements Serializable {
114: private int id;
115: private String name;
116: private String email;
117:
118: /**
119: * Gets email.
120: *
121: * @return email
122: */
123: public final String getEmail() {
124: return email;
125: }
126:
127: /**
128: * Sets email.
129: *
130: * @param email
131: * email
132: */
133: public final void setEmail(String email) {
134: this .email = email;
135: }
136:
137: /**
138: * Gets id.
139: *
140: * @return id
141: */
142: public final int getId() {
143: return id;
144: }
145:
146: /**
147: * Sets id.
148: *
149: * @param id
150: * id
151: */
152: public final void setId(int id) {
153: this .id = id;
154: }
155:
156: /**
157: * Gets name.
158: *
159: * @return name
160: */
161: public final String getName() {
162: return name;
163: }
164:
165: /**
166: * Sets name.
167: *
168: * @param name
169: * name
170: */
171: public final void setName(String name) {
172: this.name = name;
173: }
174: }
175: }
|