001/* 002 * Copyright (c) 2005 Jens Schou, Staffan Gustafsson, Bjorn Lanneskog, 003 * Einar Pehrson and Sebastian Kekkonen 004 * 005 * This file is part of 006 * CleanSheets Extension for Test Cases 007 * 008 * CleanSheets Extension for Test Cases is free software; you can 009 * redistribute it and/or modify it under the terms of the GNU General Public 010 * License as published by the Free Software Foundation; either version 2 of 011 * the License, or (at your option) any later version. 012 * 013 * CleanSheets Extension for Test Cases is distributed in the hope that 014 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 015 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 016 * See the GNU General Public License for more details. 017 * 018 * You should have received a copy of the GNU General Public License 019 * along with CleanSheets Extension for Test Cases; if not, write to the 020 * Free Software Foundation, Inc., 59 Temple Place, Suite 330, 021 * Boston, MA 02111-1307 USA 022 */ 023package csheets.ext.test.ui; 024 025import javax.swing.DefaultCellEditor; 026import javax.swing.JComboBox; 027import javax.swing.table.TableModel; 028 029import csheets.core.Value; 030import csheets.ext.test.TestCase; 031 032/** 033 * The table used to display test cases, and to provide editing of validation 034 * states. 035 * @author Einar Pehrson 036 */ 037@SuppressWarnings("serial") 038public class TestCaseTable extends TestTable { 039 040 /** 041 * Creates a new test case table. 042 * @param tableModel the table model 043 */ 044 public TestCaseTable(TableModel tableModel) { 045 super(tableModel); 046 047 // Configures value renderer 048 setDefaultRenderer(Value.class, new TestCaseResultRenderer()); 049 050 // Configures validation state editor and renderer 051 setDefaultRenderer(TestCase.ValidationState.class, new ValidationStateRenderer()); 052 setDefaultEditor(TestCase.ValidationState.class, new DefaultCellEditor( 053 new JComboBox(TestCase.ValidationState.values()))); 054 } 055 056 /** 057 * Overridden to only allow editing of validation states. 058 * @param row the row whose value is to be queried 059 * @param column the column whose value is to be queried 060 * @return true if the cell at the given row and column is editable 061 */ 062 public boolean isCellEditable(int row, int column) { 063 return getColumnClass(column) == TestCase.ValidationState.class; 064 } 065 066 067 /** 068 * Returns the class of the column in the table. 069 * @param column the column whose class is to be queried 070 * @return class the class to be returned 071 */ 072 public Class<?> getColumnClass(int column) { 073 switch (column) { 074 // case 0: return TestCase.class; 075 case 1: return Value.class; 076 case 2: return TestCase.ValidationState.class; 077 default: return Object.class; 078 } 079 } 080}