View Javadoc

1   /*
2   * The contents of this file are subject to the BT "ZEUS" Open Source 
3   * Licence (L77741), Version 1.0 (the "Licence"); you may not use this file 
4   * except in compliance with the Licence. You may obtain a copy of the Licence
5   * from $ZEUS_INSTALL/licence.html or alternatively from
6   * http://www.labs.bt.com/projects/agents/zeus/licence.htm
7   * 
8   * Except as stated in Clause 7 of the Licence, software distributed under the
9   * Licence is distributed WITHOUT WARRANTY OF ANY KIND, either express or 
10  * implied. See the Licence for the specific language governing rights and 
11  * limitations under the Licence.
12  * 
13  * The Original Code is within the package zeus.*.
14  * The Initial Developer of the Original Code is British Telecommunications
15  * public limited company, whose registered office is at 81 Newgate Street, 
16  * London, EC1A 7AJ, England. Portions created by British Telecommunications 
17  * public limited company are Copyright 1996-9. All Rights Reserved.
18  * 
19  * THIS NOTICE MUST BE INCLUDED ON ANY COPY OF THIS FILE
20  */
21  
22  
23  
24  /******************************************************************************
25  * ValidatingCellRenderer.java
26  *
27  *****************************************************************************/
28  
29  package zeus.gui.editors;
30  
31  import java.awt.*;
32  import javax.swing.*;
33  import javax.swing.table.*;
34  
35  
36  public class ValidatingCellRenderer extends DefaultTableCellRenderer {
37       protected int[] columns = null;
38       protected ValidatingModel model;
39  
40       public ValidatingCellRenderer(ValidatingModel model) {
41          this.model = model;
42       }
43       public ValidatingCellRenderer(ValidatingModel model, int column) {
44          this(model);
45          columns = new int[1];
46          columns[0] = column;
47       }
48       public ValidatingCellRenderer(ValidatingModel model, int[] input) {
49          this(model);
50          columns = new int[input.length];
51          for(int i = 0; i < input.length; i++ )
52             columns[i] = input[i];
53       }
54  
55       protected boolean checkColumn(int c) {
56          if ( columns == null || columns.length == 0 ) return true;
57  
58          for(int i = 0; i < columns.length; i++ )
59             if ( columns[i] == c ) return true;
60  
61          return false;
62       }
63  
64       public Component getTableCellRendererComponent(JTable table,
65          Object value, boolean isSelected, boolean hasFocus,
66          int row, int column) {
67  
68          if ( checkColumn(column) ) {
69             if ( model.isValidEntry(row,column) )
70                setForeground(Color.black);
71             else
72                setForeground(Color.red);
73          }
74          else
75             setForeground(Color.black);
76  
77          return super.getTableCellRendererComponent(table, value,
78             isSelected, hasFocus, row, column);
79       }
80  }