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 }