package au.com.acpfg.misc.jemboss.settings;
import java.awt.Dimension;
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.JComponent;
import javax.swing.JTextField;
import org.knime.core.data.DataCell;
import org.knime.core.data.DataColumnSpecCreator;
import org.knime.core.data.DataTableSpec;
import org.knime.core.data.def.StringCell;
import org.knime.core.node.InvalidSettingsException;
import au.com.acpfg.misc.jemboss.io.UnmarshallerInterface;
import au.com.acpfg.misc.jemboss.local.AbstractTableMapper;
import au.com.acpfg.misc.jemboss.local.ProgramSettingsListener;
/**
* Represents a series of characters on the command-line (text-box) for an emboss program invocation
*
* @author andrew.cassin
*
*/
public class StringSetting extends ProgramSetting {
private String m_val;
public StringSetting(HashMap<String,String> attrs) {
super(attrs);
if (hasAttribute("value"))
m_val = attrs.get("value");
else
m_val = getDefaultValue();
}
protected String getValue() {
return m_val;
}
protected void setValue(String new_val) {
m_val = new_val;
}
@Override
public String getColumnName() {
return null;
}
@Override
public JComponent make_widget(DataTableSpec dt) {
JTextField tf = new JTextField(getDefaultValue());
tf.setMinimumSize(new Dimension(100,20));
tf.setText(getValue());
tf.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
setValue(((JTextField)arg0.getSource()).getText());
}
});
return tf;
}
@Override
public void copy_attributes(HashMap<String,String> attrs) {
super.copy_attributes(attrs);
attrs.put("value", getValue());
}
@Override
public void getArguments(ProgramSettingsListener l) throws Exception {
String val = getValue();
if (val.length() < 1) { // pass empty argument correctly eg. 'exclude' argument for jaspscan
val = "\"\"";
}
l.addArgument(this, new String[] {"-"+getName(), val});
}
@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("string"))
return true;
return false;
}
}