package au.com.acpfg.misc.jemboss.settings;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
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.JEmbossProcessorNodeModel;
import au.com.acpfg.misc.jemboss.local.ProgramSettingsListener;
/**
* Setting which presents a list of scoring matrices to the user from EMBOSS (eg. during alignments)
*
* @author andrew.cassin
*
*/
public class MatrixSetting extends StringSetting {
protected MatrixSetting(HashMap<String, String> attrs) {
super(attrs);
}
@Override
public JComponent make_widget(DataTableSpec dt) {
JList jl = new JList(JEmbossProcessorNodeModel.getMatrices());
jl.setVisibleRowCount(5);
jl.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent arg0) {
setValue(((JList)arg0.getSource()).getSelectedValue().toString());
}
});
jl.setSelectedIndex(0);
ListModel lm = jl.getModel();
for (int i=0; i<lm.getSize(); i++) {
if (lm.getElementAt(i).equals(getValue())) {
jl.setSelectedIndex(i);
break;
}
}
return new JScrollPane(jl);
}
@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
}
@Override
public String getColumnName() {
// reading a matrix from a column is not (yet) supported
return null;
}
public static boolean canEmboss(String acd_type) {
if (acd_type.equals("matrixf") || acd_type.equals("matrixfile"))
return true;
return false;
}
}