/*
 * BooleanCellEditor.java
 *
 * Created on September 20, 2000, 6:05 AM
 */
package CITableTest;

import javax.swing.table.*;
import javax.swing.*;
import java.awt.Component;
/**
 *
 * @author  Somchai LIMSIRORATANA, Nuntiya LIMSIRORATANA(Yawai)
 * @version 1.0
 */
public class BooleanCellEditor extends AbstractCellEditor implements TableCellEditor {

    protected JComboBox comboBox;
    /** Creates new BooleanCellEditor */
    public BooleanCellEditor() {
        this(BooleanCellRenderer.BOOLEAN_TRUE_FALSE);
    }
    
    public BooleanCellEditor(String[] mode) {
        comboBox = new JComboBox();
        comboBox.addActionListener(this);
        if (mode.length >= 2) {
            comboBox.addItem(mode[0]);
            comboBox.addItem(mode[1]);
        }
        comboBox.setEditable(false);
    }

    /** Sets an initial <I>value</I> for the editor.  This will cause
     * the editor to stopEditing and lose any partially edited value
     * if the editor is editing when this method is called. <p>
     *
     * Returns the component that should be added to the client's
     * Component hierarchy.  Once installed in the client's hierarchy
     * this component will then be able to draw and receive user input.
     *
     * @param   table       the JTable that is asking the editor to edit
     *              This parameter can be null.
     * @param   value       the value of the cell to be edited.  It is
     *              up to the specific editor 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 of the cell being edited
     * @param   column      the column of the cell being edited
     * @return  the component for editing
     */
    public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelected,int row,int column) {
        if (value instanceof Boolean) {
            Boolean b = (Boolean)value;
            comboBox.setSelectedIndex((b.booleanValue())?0:1);
        }
        return comboBox;
    }
    /** Returns the value contained in the editor */
    public Object getCellEditorValue() {
        return new Boolean((comboBox.getSelectedIndex()==0)?true:false);
    }
}