package au.com.acpfg.xml.reader; import javax.swing.JFileChooser; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.knime.core.node.defaultnodesettings.DefaultNodeSettingsPane; import org.knime.core.node.defaultnodesettings.DialogComponentBoolean; import org.knime.core.node.defaultnodesettings.DialogComponentFileChooser; import org.knime.core.node.defaultnodesettings.DialogComponentNumber; import org.knime.core.node.defaultnodesettings.SettingsModelBoolean; import org.knime.core.node.defaultnodesettings.SettingsModelIntegerBounded; import org.knime.core.node.defaultnodesettings.SettingsModelString; /** * <code>NodeDialog</code> for the "XMLReader" Node. * Loads XML documents (either in a folder or files) into XML cells for further processing by the XQuery Processor node * * 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 XMLReaderNodeDialog extends DefaultNodeSettingsPane { /** * New pane for configuring XMLReader node dialog. * This is just a suggestion to demonstrate possible default dialog * components. */ protected XMLReaderNodeDialog() { super(); createNewGroup("Data Source"); final SettingsModelBoolean load_folder = new SettingsModelBoolean(XMLReaderNodeModel.CFGKEY_LOAD_FOLDER, false); addDialogComponent(new DialogComponentBoolean(load_folder, "Load all XML files in folder?")); final SettingsModelString file_name = new SettingsModelString(XMLReaderNodeModel.CFGKEY_FILE, ""); final SettingsModelString folder_name = new SettingsModelString(XMLReaderNodeModel.CFGKEY_FOLDER, ""); folder_name.setEnabled(false); file_name.setEnabled(true); addDialogComponent(new DialogComponentFileChooser(file_name, "filename-history", JFileChooser.OPEN_DIALOG, false)); addDialogComponent(new DialogComponentFileChooser(folder_name, "folder-history", JFileChooser.OPEN_DIALOG, true)); load_folder.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { boolean enabled = load_folder.getBooleanValue(); file_name.setEnabled(!enabled); // these two are always opposing each other folder_name.setEnabled(enabled); } }); createNewGroup("XML Processing Options"); addDialogComponent(new DialogComponentBoolean(new SettingsModelBoolean(XMLReaderNodeModel.CFGKEY_SINGLE_NS, true), "ignore namespaces?")); } }