package de.mpicbg.knime.scripting.matlab.plots; import de.mpicbg.knime.scripting.core.ScriptingNodeDialog; import de.mpicbg.knime.scripting.matlab.MatlabColumnSupport; import de.mpicbg.knime.scripting.matlab.MatlabScriptingBundleActivator; import de.mpicbg.knime.scripting.matlab.prefs.MatlabPreferenceInitializer; import org.knime.core.node.InvalidSettingsException; 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.SettingsModelString; import javax.swing.*; /** * The MATLAB plot node dialog adds a tab to configure the plot image * parameters to the default scripting node dialog. * * @author Holger Brandl */ public class MatlabPlotNodeDialog extends ScriptingNodeDialog { public MatlabPlotNodeDialog(String templateResources, String defaultScript, boolean useTemplateRepository) { super(defaultScript, new MatlabColumnSupport(), useTemplateRepository); createNewTab("Output Options"); addDialogComponent(new DialogComponentNumber(MatlabPlotNodeModel.createPropFigureWidthSetting(), "Width", 10)); addDialogComponent(new DialogComponentNumber(MatlabPlotNodeModel.createPropFigureHeightSetting(), "Height", 10)); DialogComponentFileChooser chooser = new DialogComponentFileChooser(MatlabPlotNodeModel.createPropOutputFileSetting(), "matlabplot.output.file", JFileChooser.SAVE_DIALOG, "png") { // override this method to make the file-selection optional @Override protected void validateSettingsBeforeSave() throws InvalidSettingsException { String value = (String) ((JComboBox<?>) ((JPanel) getComponentPanel().getComponent(0)).getComponent(0)).getSelectedItem(); ((SettingsModelString) getModel()).setStringValue(value == null ? "" : value); } }; addDialogComponent(chooser); addDialogComponent(new DialogComponentBoolean(MatlabPlotNodeModel.createOverwriteFileSetting(), "Overwrite existing file")); } @Override public String getTemplatesFromPreferences() { return MatlabScriptingBundleActivator.getDefault().getPreferenceStore().getString(MatlabPreferenceInitializer.MATLAB_PLOT_TEMPLATE_RESOURCES); } }