001    /*
002     * SimuCS - Simulator to use with Classifier Systems 
003     * MSc project - Oxford University 
004     * by Benoit Isaac - Summer 2005
005     */
006    
007    package simuLCS.graphics;
008    import java.awt.Graphics;
009    import java.awt.event.ActionEvent;
010    
011    import javax.swing.AbstractAction;
012    import javax.swing.JCheckBox;
013    
014    import simuLCS.ClassifierComponent;
015    
016    
017    /**
018     * Used as a GUI for a ClassifierComponent - A yes/no checkbox
019     * @see simuLCS.ClassifierComponent
020     * @author Benoit
021     * 
022     */
023    public class G_ClassifierCheckBox extends G_ClassifierComponent {
024            
025            
026            private JCheckBox checkbox ;
027            
028            public G_ClassifierCheckBox(ClassifierComponent c, String n, int pos, int which)
029            {
030                    super(c,n,pos,1,which); 
031            }
032            
033            /**
034             * Returns the panel with the checkbox
035             * @see simuLCS.graphics.G_ClassifierComponent#getUIComponent()
036             */
037            public G_Panel getUIComponent()
038            {
039                    G_Panel p = new G_Panel();
040                    checkbox = new JCheckBox(new ActCheckBox());
041                    p.add(checkbox);
042                    checkbox.setLabel(name);
043                    
044                    return p;
045            }
046            
047            /**
048             * When the bit = 1, the checkbox is selected
049             * @see simuLCS.graphics.G_ClassifierComponent#updateValuesFrom(java.lang.String)
050             */
051            public void updateValuesFrom(String s)
052            {
053                    if(s.equals("1"))
054                    {
055                                    checkbox.setSelected(true);
056                    }
057                    else // if s = "0" or s = "#"
058                    {
059                                    checkbox.setSelected(false);
060                    }       
061            }
062            
063            public void paintComponents(Graphics g)
064            {
065                    updateValues();
066            }
067            
068            class ActCheckBox extends AbstractAction {
069                    public void actionPerformed(ActionEvent evt) {
070                            JCheckBox cb = (JCheckBox)evt.getSource();
071    
072                            // Determine status
073                            boolean isSel = cb.isSelected();
074                            if (isSel) {
075                                    // The checkbox is selected
076                                    setClassifierPart("1");
077                            } else {
078                                    // The checkbox is now deselected
079                                    setClassifierPart("0");
080                            }
081                    }
082    
083            }
084    
085            
086    }