KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > icefaces > samples > showcase > components > table > SortableList


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.icefaces.samples.showcase.components.table;
35
36 /**
37  * <p>The SortableList class is a utility class used by the data table paginator
38  * example.</p>
39  *
40  * @since 0.3.0
41  */

42 public abstract class SortableList {
43     private String JavaDoc sort;
44     private boolean ascending;
45
46     protected SortableList(String JavaDoc defaultSortColumn) {
47         sort = defaultSortColumn;
48         ascending = isDefaultAscending(defaultSortColumn);
49     }
50
51     /**
52      * Sort the list.
53      */

54     protected abstract void sort(String JavaDoc column, boolean ascending);
55
56     /**
57      * Is the default sort direction for the given column "ascending" ?
58      */

59     protected abstract boolean isDefaultAscending(String JavaDoc sortColumn);
60
61     /**
62      * Sort the given column
63      *
64      * @param sortColumn column to sort
65      */

66     public void sort(String JavaDoc sortColumn) {
67         if (sortColumn == null) {
68             throw new IllegalArgumentException JavaDoc(
69                     "Argument sortColumn must not be null.");
70         }
71
72         if (sort.equals(sortColumn)) {
73             //current sort equals new sortColumn -> reverse sort order
74
ascending = !ascending;
75         } else {
76             //sort new column in default direction
77
sort = sortColumn;
78             ascending = isDefaultAscending(sort);
79         }
80
81         sort(sort, ascending);
82     }
83
84     /**
85      * Gets the sort column.
86      *
87      * @return column to sort
88      */

89     public String JavaDoc getSort() {
90         return sort;
91     }
92
93     /**
94      * Sets the sort column.
95      *
96      * @param sort column to sort
97      */

98     public void setSort(String JavaDoc sort) {
99         this.sort = sort;
100     }
101
102     /**
103      * Is the sort ascending?
104      *
105      * @return true if the ascending sort otherwise false
106      */

107     public boolean isAscending() {
108         return ascending;
109     }
110
111     /**
112      * Sets sort type.
113      *
114      * @param ascending true for ascending sort, false for descending sort.
115      */

116     public void setAscending(boolean ascending) {
117         this.ascending = ascending;
118     }
119 }
Popular Tags