01: package net.sourceforge.squirrel_sql.fw.datasetviewer;
02:
03: /*
04: * Copyright (C) 2001-2002 Colin Bell
05: * colbell@users.sourceforge.net
06: *
07: * This library is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU Lesser General Public
09: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: */
21:
22: import javax.swing.JTable;
23:
24: /**
25: * @author gwg
26: *
27: * Controls on how the JTable and concrete AbstractTableModel work
28: * for a particular instance.
29: * When we create the JTable and its associated (concrete) AbstractTableModel
30: * objects, we do so within wrapper functions that define how the various
31: * features of those objects operate. This is currently done in MyJTable and
32: * MyTable within DataSetViewerTablePanel. However, since some of the tables
33: * are read-only and others are editable, there are some aspects of the table
34: * operation that must be defined by the caller/creator of the table rather than
35: * within the MyJTable and MyTable wrapper functions. This means that the
36: * wrapper functions must be able to make a callback to the creator object
37: * so that the creator handle those operations. We put the actual work into the
38: * creator/caller object rather than MyJTable and MyTable.
39: */
40: public interface IDataSetTableControls {
41: /**
42: * Tell the table that it is editable. At this level we just want to know
43: * whether the table as a whole may be edited, so we do not distinguish
44: * between different columns in the table.
45: */
46: public boolean isTableEditable();
47:
48: /**
49: * See if a particular column is editable.
50: */
51: public boolean isColumnEditable(int col, Object originalValue);
52:
53: /**
54: * See if a value in a column has been limited in some way and
55: * needs to be re-read before being used for editing.
56: * For read-only tables this may actually return true since we want
57: * to be able to view the entire contents of the cell even if it was not
58: * completely loaded during the initial table setup.
59: */
60: public boolean needToReRead(int col, Object originalValue);
61:
62: /**
63: * Re-read the contents of this cell from the database.
64: * If there is a problem, the message will have a non-zero length after return.
65: */
66: public Object reReadDatum(Object[] values, int col,
67: StringBuffer message);
68:
69: /**
70: * Set up the CellEditors for the various types of data.
71: */
72: public void setCellEditors(JTable table);
73:
74: /**
75: * Call the object that represents the underlaying data model
76: * to change the actual data (e.g. in a database).
77: *
78: * @return the column indexes to update with the new value
79: */
80: public int[] changeUnderlyingValueAt(int rowIndex, int columnIndex,
81: Object newValue, Object oldValue);
82:
83: /**
84: * Delete a set of rows from the table.
85: * The indexes are the row indexes in the SortableModel.
86: */
87: public void deleteRows(int[] rows);
88:
89: /**
90: * Initiate operations to insert a new row into the table.
91: */
92: public void insertRow();
93: }
|