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}