package CITableTest;

/*
 * BooleanCellRenderer.java
 *
 * Created on September 20, 2000, 5:55 AM
 */

import javax.swing.table.TableCellRenderer;
import javax.swing.*;
import java.awt.Component;
/**
 *
 * @author  Somchai LIMSIRORATANA, Nuntiya LIMSIRORATANA(Yawai)
 * @version 1.0
 */
public class BooleanCellRenderer extends JComboBox implements TableCellRenderer {
    public static final String[] BOOLEAN_TRUE_FALSE = {"True","False"};

    /** Creates new BooleanCellRenderer */
    public BooleanCellRenderer() {
        this(BOOLEAN_TRUE_FALSE);
    }

    public BooleanCellRenderer(String[] mode) {
        if (mode.length < 2)
            mode = BOOLEAN_TRUE_FALSE;
        addItem(mode[0]);
        addItem(mode[1]);
        setEditable(false);
    }
    /** This method is sent to the renderer by the drawing table to
     * configure the renderer appropriately before drawing.  Return
     * the Component used for drawing.
     *
     * @param   table       the JTable that is asking the renderer to draw.
     *              This parameter can be null.
     * @param   value       the value of the cell to be rendered.  It is
     *              up to the specific renderer to interpret
     *              and draw the value.  eg. if value is the
     *              String "true", it could be rendered as a
     *              string or it could be rendered as a check
     *              box that is checked.  null is a valid value.
     * @param   isSelected  true is the cell is to be renderer with
     *              selection highlighting
     * @param   row         the row index of the cell being drawn.  When
     *              drawing the header the rowIndex is -1.
     * @param   column          the column index of the cell being drawn
     */
    public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) {
        if (value instanceof Boolean) {
             Boolean b = (Boolean)value;
            this.setSelectedIndex((b.booleanValue()==true)?0:1);
        }
        if (table != null)
            if (table.isCellEditable(row, column)) 
                setForeground(CellRendererConstants.EDITABLE_COLOR);
            else
                setForeground(CellRendererConstants.UNEDITABLE_COLOR);
        setBackground(table.getBackground());
        return this;
    }
}