package au.com.acpfg.pfa.interproscan; import java.util.ArrayList; import javax.swing.JFileChooser; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.knime.core.data.DataColumnSpec; import org.knime.core.data.def.StringCell; import org.knime.core.data.StringValue; import org.knime.core.node.defaultnodesettings.DefaultNodeSettingsPane; import org.knime.core.node.defaultnodesettings.DialogComponentBoolean; import org.knime.core.node.defaultnodesettings.DialogComponentColumnNameSelection; import org.knime.core.node.defaultnodesettings.DialogComponentFileChooser; import org.knime.core.node.defaultnodesettings.DialogComponentNumber; import org.knime.core.node.defaultnodesettings.DialogComponentString; import org.knime.core.node.defaultnodesettings.DialogComponentStringListSelection; import org.knime.core.node.defaultnodesettings.SettingsModelBoolean; import org.knime.core.node.defaultnodesettings.SettingsModelIntegerBounded; import org.knime.core.node.defaultnodesettings.SettingsModelString; import org.knime.core.node.defaultnodesettings.SettingsModelStringArray; import org.knime.core.node.util.ColumnFilter; /** * <code>NodeDialog</code> for the "InterProScan" Node. * Accesses the EBI webservice: interproscan with the user-specified settings * * This node dialog derives from {@link DefaultNodeSettingsPane} which allows * creation of a simple dialog with standard components. If you need a more * complex dialog please derive directly from * {@link org.knime.core.node.NodeDialogPane}. * * @author Andrew Cassin */ public class InterProScanNodeDialog extends DefaultNodeSettingsPane { /** * New pane for configuring InterProScan node dialog. * This is just a suggestion to demonstrate possible default dialog * components. */ protected InterProScanNodeDialog() { super(); addDialogComponent(new DialogComponentString(new SettingsModelString(InterProScanNodeModel.CFGKEY_EMAIL, ""), "Email address (required):")); // only string compatible columns are selectable for the protein sequence addDialogComponent( new DialogComponentColumnNameSelection(new SettingsModelString(InterProScanNodeModel.CFGKEY_SEQ, ""), "Protein Sequence column:", 0, true, false, new ColumnFilter() { @Override public boolean includeColumn(DataColumnSpec colSpec) { if (colSpec.getType().isCompatible(StringValue.class)) return true; return false; } @Override public String allFilteredMsg() { return "No String compatible column to use for Protein Sequence column!"; } })); // algorithms to permit the user to select // HACK: must correspond to EBI IPRScan list: // blastprodom, fprintscan, hmmpir, hmmpfam, hmmsmart, // hmmtigr, profilescan, hamap, patternscan, superfamily, signalp, tmhmm, hmmpanther, gene3d ArrayList<String> appl_list = new ArrayList<String>(); appl_list.add("BlastProDom"); appl_list.add("FPrintscan"); appl_list.add("HMMPIR"); appl_list.add("HMMPfam"); appl_list.add("HMMSmart"); appl_list.add("HMMTigr"); appl_list.add("ProfileScan"); appl_list.add("HAMAP"); appl_list.add("patternScan"); appl_list.add("SuperFamily"); appl_list.add("SignalP"); appl_list.add("TMHMM"); appl_list.add("HMMPanther"); appl_list.add("Gene3D"); addDialogComponent(new DialogComponentStringListSelection( new SettingsModelStringArray(InterProScanNodeModel.CFGKEY_USE_APPL, appl_list.toArray(new String[0])), "Algorithms to search via: ", appl_list, true, 5)); // permit the use of CRC methods during scan? (If so, its faster) addDialogComponent(new DialogComponentBoolean(new SettingsModelBoolean(InterProScanNodeModel.CFGKEY_USE_CRC, true), "Use CRC methods?")); createNewGroup("Graphical Results Summary"); final SettingsModelString sms = new SettingsModelString(InterProScanNodeModel.CFGKEY_IMGDIR, "c:/temp"); final SettingsModelBoolean b_saveimgs = new SettingsModelBoolean(InterProScanNodeModel.CFGKEY_SAVEIMGS, false); b_saveimgs.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { sms.setEnabled(b_saveimgs.getBooleanValue()); } }); addDialogComponent(new DialogComponentBoolean(b_saveimgs, "Save graphical results to folder?")); addDialogComponent(new DialogComponentFileChooser(sms, "image-folder-history", JFileChooser.OPEN_DIALOG, true, "")); } }