package au.com.acpfg.misc.jemboss.settings; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.HashMap; import javax.swing.JCheckBox; import javax.swing.JComponent; import org.knime.core.data.DataCell; import org.knime.core.data.DataTableSpec; import org.knime.core.node.InvalidSettingsException; import au.com.acpfg.misc.jemboss.local.AbstractTableMapper; import au.com.acpfg.misc.jemboss.local.ProgramSettingsListener; /** * Implements an object capable of representing ACD boolean or toggle settings * @author andrew.cassin * */ public class BooleanSetting extends ProgramSetting { private Boolean m_val; protected BooleanSetting(HashMap<String,String> attrs) { super(attrs); if (attrs.containsKey("value")) { m_val = new Boolean(attrs.get("value")); } else { m_val = new Boolean(true); } } @Override public String getColumnName() { // never taken from a column (yet) return null; } @Override public JComponent make_widget(DataTableSpec dt) { boolean bv = false; String dv = getDefaultValue(); if (dv.length()>0) { char c = dv.toLowerCase().charAt(0); if (c == 'y' || c == 't'|| c == '1') bv = true; } JCheckBox jcb = new JCheckBox("", bv); jcb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { m_val = new Boolean(((JCheckBox)e.getSource()).isSelected()); } }); m_val = new Boolean(bv); return jcb; } @Override public void copy_attributes(HashMap<String,String> atts) { super.copy_attributes(atts); atts.put("value", m_val.toString()); } @Override public void getArguments(ProgramSettingsListener l) { String t = getType(); if (t.equals("bool") || t.equals("toggle")) { String head = ""; if (m_val.equals("false")) head = "no"; l.addArgument(this, new String[] { "-"+head+getName() }); } else if (t.equals("boolean")) { l.addArgument(this, new String[] { "-"+getName(), m_val.booleanValue() ? "Y" : "N" }); } } @Override public void marshal(String id, DataCell c, PrintWriter fw) throws IOException, InvalidSettingsException { // TODO Auto-generated method stub } public static boolean canEmboss(String acd_type) { if (acd_type.equals("boolean") || acd_type.equals("toggle")) return true; return false; } }