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.PrintWriter; import java.util.HashMap; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; 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 (unchecked) range of values. Enforcement of the user-entered data is left to EMBOSS * * @author andrew.cassin * */ public class RangeSetting extends ProgramSetting { private String m_lower; private String m_upper; protected RangeSetting(HashMap<String, String> attrs) { super(attrs); if (attrs.containsKey("lower")) m_lower = attrs.get("lower"); else m_lower = getDefaultValue(); if (attrs.containsKey("upper")) m_upper = attrs.get("upper"); else m_upper = getDefaultValue(); } @Override public String getColumnName() { return null; } @Override public JComponent make_widget(DataTableSpec dt) { return make_range_panel(); } private JComponent make_range_panel() { JPanel p = new JPanel(); p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); JTextField f1 = new JTextField(5); JTextField f2 = new JTextField(5); f1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { m_lower = ((JTextField)e.getSource()).getText(); } }); f2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { m_upper = ((JTextField)e.getSource()).getText(); } }); p.add(f1); p.add(new JLabel(" - ")); p.add(f2); p.add(Box.createHorizontalGlue()); return p; } @Override public void copy_attributes(HashMap<String,String> attrs) { super.copy_attributes(attrs); attrs.put("lowerbound", m_lower); attrs.put("upperbound", m_upper); } @Override public void getArguments(ProgramSettingsListener l) throws Exception { // TODO Auto-generated method stub } @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("range")) return true; return false; } }