1 /*
2 * Copyright (c) 2003-2008 by Cosylab d. d.
3 *
4 * This file is part of CosyBeans-Common.
5 *
6 * CosyBeans-Common is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * CosyBeans-Common is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with CosyBeans-Common. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package com.cosylab.gui.components.table;
21
22 /**
23 * <code>TableRowModel</code> is table model which natural organization of data
24 * is grouped by rows. This model can not be used directly in
25 * <code>JTable</code>, it must be used in collaboration with
26 * <code>TableModelRows</code> or similar implementation of
27 * <code>TableModel</code>.
28 *
29 * @author <a href="mailto:igor.kriznar@cosylab.com">Igor Kriznar</a>
30 * @version $Id: TableRowModel.java,v 1.4 2008-04-22 12:28:40 jbobnar Exp $
31 *
32 * @since May 3, 2004.
33 */
34 public interface TableRowModel
35 {
36 /**
37 * Number of columns inside this model.
38 *
39 * @return number of columns inside this model
40 */
41 public int getColumnCount();
42
43 /**
44 * Returns number of rows contained in this model.
45 *
46 * @return number of rows
47 */
48 public int getRowCount();
49
50 /**
51 * Returns a row object at row index.
52 *
53 * @param rowIndex the row index
54 *
55 * @return a row at the row index
56 */
57 public TableRow getRowAt(int rowIndex);
58
59 /**
60 * Returns index of a row.
61 *
62 * @param row a row form this model
63 *
64 * @return the index ot the row
65 */
66 public int getRowIndex(TableRow row);
67
68 /**
69 * Add listener, which receives notification of changes in the model.
70 *
71 * @param l a <code>TableRowModelListener</code> listener
72 */
73 public void addTableRowModelListener(TableRowModelListener l);
74
75 /**
76 * Removes listener.
77 *
78 * @param l a <code>TableRowModelListener</code> listener
79 */
80 public void removeTableRowModelListener(TableRowModelListener l);
81
82 /**
83 * Returns name of column.
84 *
85 * @param index the index of the colummn
86 *
87 * @return the name of the column under provided index
88 *
89 * @see javax.swing.table.TableModel#getColumnName(int)
90 */
91 public String getColumnName(int index);
92
93 /**
94 * This method is called from table row, when wants to notify its parent
95 * model about value change.
96 *
97 * @param row the row which value has changes
98 * @param valueIndex the index of the value, if <code>-1</code> all values
99 * has been changed
100 */
101 public void fireRowUpdate(TableRow row, int valueIndex);
102
103 /**
104 * Sort rows in ascending or descengin order according to the natural order
105 * of cells in specified column. Natural order is determined by cells,
106 * which implements <code>Comparable</code>.
107 *
108 * @param column the column index, according to which rows are sorted
109 * @param descending sorted rows are ordered ascending if
110 * <code>false</code>, or descending if <code>true</code>.
111 */
112 public void sortRows(int column, boolean descending);
113 }
114
115 /* __oOo__ */