package usda.weru.util.table;

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import javax.swing.Icon;
import javax.swing.JCheckBox;
import usda.weru.resources.Resources;



/**
 *
 * @author Jonathan
 */
public class TriStateCheckBox extends JCheckBox 
{
    final static boolean midState = true;
            
    private static final long serialVersionUID = 76L;
    
    private static final Icon empty = Resources.getIcon("empty.jpg");
    private static final Icon left = Resources.getIcon("left.jpg");
    private static final Icon right = Resources.getIcon("right.jpg");
    private int state = 0;
    
    public TriStateCheckBox()
    {
        this(0);
    }
    
    @SuppressWarnings("fallthrough")
    public TriStateCheckBox(int selection)
    {
        state = selection;
    }
    
    public int getSelectionState()
    {
        return state;
    }
    
    public void setSelectionState(int selection)
    {
        state = selection;
        setSelected(false);
    }
    
    @Override
    public void setSelected(boolean state)
    {
        setSelectionState(state);
    }
    
    public void setSelectionState(boolean selection)
    {
        if(selection)
        {
            state = ++ state == 3 ? 0 : state;
            super.setSelected(false);
        }
    }
    
    @Override
    public void paint(Graphics graph)
    {
        switch(state)
        {
            case 0: setIcon(empty);
                break;
            case 1: setIcon(left);
                break;
            case 2: setIcon(right);
                break;
            default:
        }
        super.paint(graph);
    }
}
