package com.compomics.util.gui.parameters.identification_parameters.algorithm_settings;
import com.compomics.util.examples.BareBonesBrowserLaunch;
import com.compomics.util.experiment.identification.identification_parameters.IdentificationAlgorithmParameter;
import com.compomics.util.experiment.identification.identification_parameters.tool_specific.MyriMatchParameters;
import com.compomics.util.gui.GuiUtilities;
import com.compomics.util.gui.JOptionEditorPane;
import com.compomics.util.gui.parameters.identification_parameters.AlgorithmSettingsDialog;
import java.awt.Color;
import java.awt.Dialog;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
/**
* Dialog for the MyriMatch specific settings.
*
* @author Harald Barsnes
*/
public class MyriMatchSettingsDialog extends javax.swing.JDialog implements AlgorithmSettingsDialog {
/**
* Boolean indicating whether the used canceled the editing.
*/
private boolean cancelled = false;
/**
* Boolean indicating whether the settings can be edited by the user.
*/
private boolean editable;
/**
* Creates new form MyriMatchSettingsDialog with a frame as owner.
*
* @param parent the parent frame
* @param myriMatchParameters the MyriMatch parameters
* @param editable boolean indicating whether the settings can be edited by the user
*/
public MyriMatchSettingsDialog(java.awt.Frame parent, MyriMatchParameters myriMatchParameters, boolean editable) {
super(parent, true);
this.editable = editable;
initComponents();
setUpGUI();
populateGUI(myriMatchParameters);
validateInput(false);
setLocationRelativeTo(parent);
setVisible(true);
}
/**
* Creates new form MyriMatchSettingsDialog with a dialog as owner.
*
* @param owner the dialog owner
* @param parent the parent frame
* @param myriMatchParameters the MyriMatch parameters
* @param editable boolean indicating whether the settings can be edited by the user
*/
public MyriMatchSettingsDialog(Dialog owner, java.awt.Frame parent, MyriMatchParameters myriMatchParameters, boolean editable) {
super(owner, true);
this.editable = editable;
initComponents();
setUpGUI();
populateGUI(myriMatchParameters);
validateInput(false);
setLocationRelativeTo(owner);
setVisible(true);
}
/**
* Sets up the GUI.
*/
private void setUpGUI() {
useSmartPlusThreeModelCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER));
computeXCorrCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER));
terminiCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER));
fragmentationMethodCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER));
outputFormatCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER));
}
/**
* Populates the GUI using the given settings.
*
* @param myriMatchParameters the parameters to display
*/
private void populateGUI(MyriMatchParameters myriMatchParameters) {
if (myriMatchParameters.getMinPeptideLength() != null) {
minPepLengthTxt.setText(myriMatchParameters.getMinPeptideLength() + "");
}
if (myriMatchParameters.getMaxPeptideLength() != null) {
maxPepLengthTxt.setText(myriMatchParameters.getMaxPeptideLength() + "");
}
if (myriMatchParameters.getMinPrecursorMass() != null) {
minPrecursorMassTxt.setText(myriMatchParameters.getMinPrecursorMass() + "");
}
if (myriMatchParameters.getMaxPrecursorMass() != null) {
maxPrecursorMassTxt.setText(myriMatchParameters.getMaxPrecursorMass() + "");
}
if (myriMatchParameters.getNumberOfSpectrumMatches() != null) {
numberMatchesTxt.setText(myriMatchParameters.getNumberOfSpectrumMatches() + "");
}
if (myriMatchParameters.getMaxDynamicMods() != null) {
maxPtmsTxt.setText(myriMatchParameters.getMaxDynamicMods() + "");
}
fragmentationMethodCmb.setSelectedItem(myriMatchParameters.getFragmentationRule());
if (myriMatchParameters.getMinTerminiCleavages() != null) {
terminiCmb.setSelectedIndex(myriMatchParameters.getMinTerminiCleavages());
}
if (myriMatchParameters.getUseSmartPlusThreeModel()) {
useSmartPlusThreeModelCmb.setSelectedIndex(0);
} else {
useSmartPlusThreeModelCmb.setSelectedIndex(1);
}
if (myriMatchParameters.getComputeXCorr()) {
computeXCorrCmb.setSelectedIndex(0);
} else {
computeXCorrCmb.setSelectedIndex(1);
}
if (myriMatchParameters.getTicCutoffPercentage() != null) {
ticCutoffPercentageTxt.setText(myriMatchParameters.getTicCutoffPercentage() + "");
}
if (myriMatchParameters.getNumIntensityClasses() != null) {
numIntensityClassesTxt.setText(myriMatchParameters.getNumIntensityClasses() + "");
}
if (myriMatchParameters.getClassSizeMultiplier() != null) {
classSizeMultiplierTxt.setText(myriMatchParameters.getClassSizeMultiplier() + "");
}
if (myriMatchParameters.getNumberOfBatches() != null) {
numbBatchesTxt.setText(myriMatchParameters.getNumberOfBatches() + "");
}
if (myriMatchParameters.getMaxPeakCount() != null) {
maxPeakCountTxt.setText(myriMatchParameters.getMaxPeakCount() + "");
}
if (myriMatchParameters.getOutputFormat().equalsIgnoreCase("mzIdentML")) {
outputFormatCmb.setSelectedIndex(0);
} else {
outputFormatCmb.setSelectedIndex(1);
}
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public IdentificationAlgorithmParameter getParameters() {
return getInput();
}
/**
* Returns the user selection as MyriMatch parameters object.
*
* @return the user selection
*/
public MyriMatchParameters getInput() {
MyriMatchParameters result = new MyriMatchParameters();
String input = minPepLengthTxt.getText().trim();
if (!input.equals("")) {
result.setMinPeptideLength(new Integer(input));
}
input = maxPepLengthTxt.getText().trim();
if (!input.equals("")) {
result.setMaxPeptideLength(new Integer(input));
}
input = minPrecursorMassTxt.getText().trim();
if (!input.equals("")) {
result.setMinPrecursorMass(new Double(input));
}
input = maxPrecursorMassTxt.getText().trim();
if (!input.equals("")) {
result.setMaxPrecursorMass(new Double(input));
}
input = numberMatchesTxt.getText().trim();
if (!input.equals("")) {
result.setNumberOfSpectrumMatches(new Integer(input));
}
input = maxPtmsTxt.getText().trim();
if (!input.equals("")) {
result.setMaxDynamicMods(new Integer(input));
}
result.setFragmentationRule((String) fragmentationMethodCmb.getSelectedItem());
result.setMinTerminiCleavages(terminiCmb.getSelectedIndex());
result.setUseSmartPlusThreeModel(useSmartPlusThreeModelCmb.getSelectedIndex() == 0);
result.setComputeXCorr(computeXCorrCmb.getSelectedIndex() == 0);
input = ticCutoffPercentageTxt.getText().trim();
if (!input.equals("")) {
result.setTicCutoffPercentage(new Double(input));
}
input = numIntensityClassesTxt.getText().trim();
if (!input.equals("")) {
result.setNumIntensityClasses(new Integer(input));
}
input = classSizeMultiplierTxt.getText().trim();
if (!input.equals("")) {
result.setClassSizeMultiplier(new Integer(input));
}
input = numbBatchesTxt.getText().trim();
if (!input.equals("")) {
result.setNumberOfBatches(new Integer(input));
}
input = maxPeakCountTxt.getText().trim();
if (!input.equals("")) {
result.setMaxPeakCount(new Integer(input));
}
result.setOutputFormat((String) outputFormatCmb.getSelectedItem());
return result;
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
backgroundPanel = new javax.swing.JPanel();
advancedSearchSettingsPanel = new javax.swing.JPanel();
scrollPane = new javax.swing.JScrollPane();
advancedSettingsPanel = new javax.swing.JPanel();
useSmartPlusThreeModelCmb = new javax.swing.JComboBox();
useSmartPlusThreeModelLabel = new javax.swing.JLabel();
minPepLengthTxt = new javax.swing.JTextField();
peptideLengthDividerLabel = new javax.swing.JLabel();
maxPepLengthTxt = new javax.swing.JTextField();
peptideLengthLabel = new javax.swing.JLabel();
numberMatchesLabel = new javax.swing.JLabel();
numberMatchesTxt = new javax.swing.JTextField();
computeXCorrlLabel = new javax.swing.JLabel();
computeXCorrCmb = new javax.swing.JComboBox();
numberTerminiLabel = new javax.swing.JLabel();
maxPtmsLabel = new javax.swing.JLabel();
maxPtmsTxt = new javax.swing.JTextField();
terminiCmb = new javax.swing.JComboBox();
precursorMassLabel = new javax.swing.JLabel();
minPrecursorMassTxt = new javax.swing.JTextField();
precursorMassDividerLabel = new javax.swing.JLabel();
maxPrecursorMassTxt = new javax.swing.JTextField();
ticCutoffPercentageLabel = new javax.swing.JLabel();
ticCutoffPercentageTxt = new javax.swing.JTextField();
numIntensityClassesLabel = new javax.swing.JLabel();
numIntensityClassesTxt = new javax.swing.JTextField();
classSizeMultiplierLabel = new javax.swing.JLabel();
classSizeMultiplierTxt = new javax.swing.JTextField();
numbBatchesLabel = new javax.swing.JLabel();
numbBatchesTxt = new javax.swing.JTextField();
fragmentationMethodLabel = new javax.swing.JLabel();
fragmentationMethodCmb = new javax.swing.JComboBox();
maxPeakCountLabel = new javax.swing.JLabel();
maxPeakCountTxt = new javax.swing.JTextField();
outputFormatLabel = new javax.swing.JLabel();
outputFormatCmb = new javax.swing.JComboBox();
okButton = new javax.swing.JButton();
closeButton = new javax.swing.JButton();
openDialogHelpJButton = new javax.swing.JButton();
advancedSettingsWarningLabel = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("MyriMatch Advanced Settings");
setMinimumSize(new java.awt.Dimension(400, 400));
backgroundPanel.setBackground(new java.awt.Color(230, 230, 230));
advancedSearchSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Search Settings"));
advancedSearchSettingsPanel.setOpaque(false);
scrollPane.setBorder(null);
advancedSettingsPanel.setBackground(new java.awt.Color(230, 230, 230));
useSmartPlusThreeModelCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" }));
useSmartPlusThreeModelLabel.setText("Use Smart Plus Thee Model");
minPepLengthTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
minPepLengthTxt.setText("6");
minPepLengthTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
minPepLengthTxtKeyReleased(evt);
}
});
peptideLengthDividerLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
peptideLengthDividerLabel.setText("-");
maxPepLengthTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
maxPepLengthTxt.setText("30");
maxPepLengthTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
maxPepLengthTxtKeyReleased(evt);
}
});
peptideLengthLabel.setText("Peptide Length (min - max)");
numberMatchesLabel.setText("Number of Spectrum Matches");
numberMatchesTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
numberMatchesTxt.setText("1");
numberMatchesTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
numberMatchesTxtKeyReleased(evt);
}
});
computeXCorrlLabel.setText("Compute XCorr");
computeXCorrCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" }));
computeXCorrCmb.setSelectedIndex(1);
numberTerminiLabel.setText("Enzymatic Terminals");
maxPtmsLabel.setText("Max Variable PTMs per Peptide");
maxPtmsTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
maxPtmsTxt.setText("2");
maxPtmsTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
maxPtmsTxtKeyReleased(evt);
}
});
terminiCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "None Required", "At Least One", "Both" }));
terminiCmb.setSelectedIndex(2);
precursorMassLabel.setText("Precursor Mass (min - max)");
minPrecursorMassTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
minPrecursorMassTxt.setText("0");
minPrecursorMassTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
minPrecursorMassTxtKeyReleased(evt);
}
});
precursorMassDividerLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
precursorMassDividerLabel.setText("-");
maxPrecursorMassTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
maxPrecursorMassTxt.setText("10000");
maxPrecursorMassTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
maxPrecursorMassTxtKeyReleased(evt);
}
});
ticCutoffPercentageLabel.setText("TIC Cutoff Percentage (0.0-1.0)");
ticCutoffPercentageTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
ticCutoffPercentageTxt.setText("0.98");
ticCutoffPercentageTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
ticCutoffPercentageTxtKeyReleased(evt);
}
});
numIntensityClassesLabel.setText("Number of Intensity Classes");
numIntensityClassesTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
numIntensityClassesTxt.setText("3");
numIntensityClassesTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
numIntensityClassesTxtKeyReleased(evt);
}
});
classSizeMultiplierLabel.setText("Class Size Multiplier");
classSizeMultiplierTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
classSizeMultiplierTxt.setText("2");
classSizeMultiplierTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
classSizeMultiplierTxtKeyReleased(evt);
}
});
numbBatchesLabel.setText("Number of Batches");
numbBatchesTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
numbBatchesTxt.setText("50");
numbBatchesTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
numbBatchesTxtKeyReleased(evt);
}
});
fragmentationMethodLabel.setText("Fragmentation Method");
fragmentationMethodCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "CID", "HCD", "ETD" }));
maxPeakCountLabel.setText("Max Peak Count");
maxPeakCountTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER);
maxPeakCountTxt.setText("100");
maxPeakCountTxt.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
maxPeakCountTxtKeyReleased(evt);
}
});
outputFormatLabel.setText("Output Format");
outputFormatCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "mzIdentML", "pepXML" }));
outputFormatCmb.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
outputFormatCmbActionPerformed(evt);
}
});
javax.swing.GroupLayout advancedSettingsPanelLayout = new javax.swing.GroupLayout(advancedSettingsPanel);
advancedSettingsPanel.setLayout(advancedSettingsPanelLayout);
advancedSettingsPanelLayout.setHorizontalGroup(
advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(useSmartPlusThreeModelLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(useSmartPlusThreeModelCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(computeXCorrlLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(computeXCorrCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(ticCutoffPercentageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ticCutoffPercentageTxt))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(numIntensityClassesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(numIntensityClassesTxt))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(classSizeMultiplierLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(classSizeMultiplierTxt))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(numbBatchesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(numbBatchesTxt))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(numberMatchesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(numberMatchesTxt))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(maxPtmsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxPtmsTxt))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(numberTerminiLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(terminiCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(peptideLengthLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(minPepLengthTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(peptideLengthDividerLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxPepLengthTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(precursorMassLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(minPrecursorMassTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(precursorMassDividerLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxPrecursorMassTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(fragmentationMethodLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(fragmentationMethodCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(maxPeakCountLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxPeakCountTxt))
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addComponent(outputFormatLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(outputFormatCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
advancedSettingsPanelLayout.setVerticalGroup(
advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(advancedSettingsPanelLayout.createSequentialGroup()
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(minPepLengthTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(maxPepLengthTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(peptideLengthDividerLabel)
.addComponent(peptideLengthLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(minPrecursorMassTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(maxPrecursorMassTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(precursorMassDividerLabel)
.addComponent(precursorMassLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(numberMatchesLabel)
.addComponent(numberMatchesTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(maxPtmsLabel)
.addComponent(maxPtmsTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(fragmentationMethodCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(fragmentationMethodLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(numberTerminiLabel)
.addComponent(terminiCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(useSmartPlusThreeModelLabel)
.addComponent(useSmartPlusThreeModelCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(computeXCorrlLabel)
.addComponent(computeXCorrCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ticCutoffPercentageLabel)
.addComponent(ticCutoffPercentageTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(numIntensityClassesLabel)
.addComponent(numIntensityClassesTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(classSizeMultiplierLabel)
.addComponent(classSizeMultiplierTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(numbBatchesLabel)
.addComponent(numbBatchesTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(maxPeakCountLabel)
.addComponent(maxPeakCountTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advancedSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(outputFormatLabel)
.addComponent(outputFormatCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
scrollPane.setViewportView(advancedSettingsPanel);
javax.swing.GroupLayout advancedSearchSettingsPanelLayout = new javax.swing.GroupLayout(advancedSearchSettingsPanel);
advancedSearchSettingsPanel.setLayout(advancedSearchSettingsPanelLayout);
advancedSearchSettingsPanelLayout.setHorizontalGroup(
advancedSearchSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(advancedSearchSettingsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(scrollPane)
.addContainerGap())
);
advancedSearchSettingsPanelLayout.setVerticalGroup(
advancedSearchSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(advancedSearchSettingsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(scrollPane)
.addContainerGap())
);
okButton.setText("OK");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
closeButton.setText("Close");
closeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
closeButtonActionPerformed(evt);
}
});
openDialogHelpJButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/help.GIF"))); // NOI18N
openDialogHelpJButton.setToolTipText("Help");
openDialogHelpJButton.setBorder(null);
openDialogHelpJButton.setBorderPainted(false);
openDialogHelpJButton.setContentAreaFilled(false);
openDialogHelpJButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
openDialogHelpJButtonMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
openDialogHelpJButtonMouseExited(evt);
}
});
openDialogHelpJButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
openDialogHelpJButtonActionPerformed(evt);
}
});
advancedSettingsWarningLabel.setText("Click to open the MyriMatch help page.");
javax.swing.GroupLayout backgroundPanelLayout = new javax.swing.GroupLayout(backgroundPanel);
backgroundPanel.setLayout(backgroundPanelLayout);
backgroundPanelLayout.setHorizontalGroup(
backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, backgroundPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(advancedSearchSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(backgroundPanelLayout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(openDialogHelpJButton)
.addGap(18, 18, 18)
.addComponent(advancedSettingsWarningLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(closeButton)))
.addContainerGap())
);
backgroundPanelLayout.setVerticalGroup(
backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(backgroundPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(advancedSearchSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(openDialogHelpJButton)
.addComponent(advancedSettingsWarningLabel)
.addComponent(okButton)
.addComponent(closeButton))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(backgroundPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(backgroundPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
/**
* Close the dialog without saving the settings.
*
* @param evt
*/
private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed
cancelled = true;
dispose();
}//GEN-LAST:event_closeButtonActionPerformed
/**
* Save the settings and then close the dialog.
*
* @param evt
*/
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
if (validateInput(true)) {
dispose();
}
}//GEN-LAST:event_okButtonActionPerformed
/**
* Change the cursor to a hand cursor.
*
* @param evt
*/
private void openDialogHelpJButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_openDialogHelpJButtonMouseEntered
setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
}//GEN-LAST:event_openDialogHelpJButtonMouseEntered
/**
* Change the cursor back to the default cursor.
*
* @param evt
*/
private void openDialogHelpJButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_openDialogHelpJButtonMouseExited
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
}//GEN-LAST:event_openDialogHelpJButtonMouseExited
/**
* Open the MyriMatch help page.
*
* @param evt
*/
private void openDialogHelpJButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openDialogHelpJButtonActionPerformed
setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
BareBonesBrowserLaunch.openURL("http://fenchurch.mc.vanderbilt.edu/bumbershoot/myrimatch/");
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
}//GEN-LAST:event_openDialogHelpJButtonActionPerformed
/**
* Validate the input.
*
* @param evt
*/
private void minPepLengthTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_minPepLengthTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_minPepLengthTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void maxPepLengthTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxPepLengthTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_maxPepLengthTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void numberMatchesTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_numberMatchesTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_numberMatchesTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void maxPtmsTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxPtmsTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_maxPtmsTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void minPrecursorMassTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_minPrecursorMassTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_minPrecursorMassTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void maxPrecursorMassTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxPrecursorMassTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_maxPrecursorMassTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void ticCutoffPercentageTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_ticCutoffPercentageTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_ticCutoffPercentageTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void numIntensityClassesTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_numIntensityClassesTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_numIntensityClassesTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void classSizeMultiplierTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_classSizeMultiplierTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_classSizeMultiplierTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void numbBatchesTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_numbBatchesTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_numbBatchesTxtKeyReleased
/**
* Validate the input.
*
* @param evt
*/
private void maxPeakCountTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxPeakCountTxtKeyReleased
validateInput(false);
}//GEN-LAST:event_maxPeakCountTxtKeyReleased
/**
* Show warning if pepXML is selected.
*
* @param evt
*/
private void outputFormatCmbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_outputFormatCmbActionPerformed
if (outputFormatCmb.getSelectedIndex() != 0 && this.isVisible()) {
// invoke later to give time for components to update
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JOptionPane.showMessageDialog(MyriMatchSettingsDialog.this, JOptionEditorPane.getJOptionEditorPane(
"Note that the MyriMatch pepXML format is not compatible with <a href=\"http://compomics.github.io/projects/peptide-shaker.html\">PeptideShaker</a>."),
"Format Warning", JOptionPane.WARNING_MESSAGE);
}
});
}
}//GEN-LAST:event_outputFormatCmbActionPerformed
/**
* Inspects the parameters validity.
*
* @param showMessage if true an error messages are shown to the users
* @return a boolean indicating if the parameters are valid
*/
public boolean validateInput(boolean showMessage) {
boolean valid = true;
valid = GuiUtilities.validateIntegerInput(this, peptideLengthLabel, minPepLengthTxt, "minimum peptide length", "Peptide Length Error", true, showMessage, valid);
valid = GuiUtilities.validateIntegerInput(this, peptideLengthLabel, maxPepLengthTxt, "maximum peptide length", "Peptide Length Error", true, showMessage, valid);
valid = GuiUtilities.validateDoubleInput(this, precursorMassLabel, minPrecursorMassTxt, "minimum precursor mass", "Precursor Mass Error", true, showMessage, valid);
valid = GuiUtilities.validateDoubleInput(this, precursorMassLabel, maxPrecursorMassTxt, "maximum precursor mass", "Precursor Mass Error", true, showMessage, valid);
valid = GuiUtilities.validateIntegerInput(this, numberMatchesLabel, numberMatchesTxt, "number of spectrum matches", "Number Spectrum Matches Error", true, showMessage, valid);
valid = GuiUtilities.validateIntegerInput(this, maxPtmsLabel, maxPtmsTxt, "max number of PTMs per peptide", "Peptide PTM Error", true, showMessage, valid);
valid = GuiUtilities.validateDoubleInput(this, ticCutoffPercentageLabel, ticCutoffPercentageTxt, "TIC cutoff precentage", "TIC Cutoff Percentage Error", true, showMessage, valid);
valid = GuiUtilities.validateIntegerInput(this, numIntensityClassesLabel, numIntensityClassesTxt, "number of intensity classes", "Intensity Classes Error", true, showMessage, valid);
valid = GuiUtilities.validateIntegerInput(this, classSizeMultiplierLabel, classSizeMultiplierTxt, "class size multiplier", "Class Size Error", true, showMessage, valid);
valid = GuiUtilities.validateIntegerInput(this, numbBatchesLabel, numbBatchesTxt, "number of batches", "Number of Batches Error", true, showMessage, valid);
valid = GuiUtilities.validateIntegerInput(this, maxPeakCountLabel, maxPeakCountTxt, "maximum peak count", "Max Peak Count Error", true, showMessage, valid);
// check that the tic cuttoff is between 0 and 1
try {
double temp = Double.parseDouble(ticCutoffPercentageTxt.getText().trim());
if (temp < 0 || temp > 1) {
if (showMessage && valid) {
JOptionPane.showMessageDialog(this, "The TIC cutoff percentage has to be between 0.0 and 1.0.",
"TIC Cutoff Percentage Error", JOptionPane.WARNING_MESSAGE);
}
valid = false;
ticCutoffPercentageLabel.setForeground(Color.RED);
ticCutoffPercentageLabel.setToolTipText("Please select a valid TIC cutoff percentage [0.0-1.0]");
}
} catch (NumberFormatException e) {
// ignore, handled above
}
okButton.setEnabled(valid);
return valid;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel advancedSearchSettingsPanel;
private javax.swing.JPanel advancedSettingsPanel;
private javax.swing.JLabel advancedSettingsWarningLabel;
private javax.swing.JPanel backgroundPanel;
private javax.swing.JLabel classSizeMultiplierLabel;
private javax.swing.JTextField classSizeMultiplierTxt;
private javax.swing.JButton closeButton;
private javax.swing.JComboBox computeXCorrCmb;
private javax.swing.JLabel computeXCorrlLabel;
private javax.swing.JComboBox fragmentationMethodCmb;
private javax.swing.JLabel fragmentationMethodLabel;
private javax.swing.JLabel maxPeakCountLabel;
private javax.swing.JTextField maxPeakCountTxt;
private javax.swing.JTextField maxPepLengthTxt;
private javax.swing.JTextField maxPrecursorMassTxt;
private javax.swing.JLabel maxPtmsLabel;
private javax.swing.JTextField maxPtmsTxt;
private javax.swing.JTextField minPepLengthTxt;
private javax.swing.JTextField minPrecursorMassTxt;
private javax.swing.JLabel numIntensityClassesLabel;
private javax.swing.JTextField numIntensityClassesTxt;
private javax.swing.JLabel numbBatchesLabel;
private javax.swing.JTextField numbBatchesTxt;
private javax.swing.JLabel numberMatchesLabel;
private javax.swing.JTextField numberMatchesTxt;
private javax.swing.JLabel numberTerminiLabel;
private javax.swing.JButton okButton;
private javax.swing.JButton openDialogHelpJButton;
private javax.swing.JComboBox outputFormatCmb;
private javax.swing.JLabel outputFormatLabel;
private javax.swing.JLabel peptideLengthDividerLabel;
private javax.swing.JLabel peptideLengthLabel;
private javax.swing.JLabel precursorMassDividerLabel;
private javax.swing.JLabel precursorMassLabel;
private javax.swing.JScrollPane scrollPane;
private javax.swing.JComboBox terminiCmb;
private javax.swing.JLabel ticCutoffPercentageLabel;
private javax.swing.JTextField ticCutoffPercentageTxt;
private javax.swing.JComboBox useSmartPlusThreeModelCmb;
private javax.swing.JLabel useSmartPlusThreeModelLabel;
// End of variables declaration//GEN-END:variables
}