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.AndromedaParameters; import com.compomics.util.experiment.identification.identification_parameters.tool_specific.AndromedaParameters.AndromedaDecoyMode; import com.compomics.util.experiment.massspectrometry.FragmentationMethod; import com.compomics.util.gui.GuiUtilities; import com.compomics.util.gui.parameters.identification_parameters.AlgorithmSettingsDialog; import java.awt.Color; import java.awt.Dialog; import javax.swing.DefaultComboBoxModel; import javax.swing.JOptionPane; import javax.swing.SwingConstants; /** * Dialog for the Andromeda specific settings. * * @author Harald Barsnes */ public class AndromedaSettingsDialog 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 a new TideSettingsDialog with a frame as owner. * * @param parentFrame the parent frame * @param andromedaParameters the Andromeda parameters * @param editable boolean indicating whether the settings can be edited by * the user */ public AndromedaSettingsDialog(java.awt.Frame parentFrame, AndromedaParameters andromedaParameters, boolean editable) { super(parentFrame, true); this.editable = editable; initComponents(); setUpGUI(); populateGUI(andromedaParameters); validateInput(false); setLocationRelativeTo(parentFrame); setVisible(true); } /** * Creates a new TideSettingsDialog with a dialog as owner. * * @param owner the dialog owner * @param parentFrame the parent frame * @param andromedaParameters the Andromeda parameters * @param editable boolean indicating whether the settings can be edited by * the user */ public AndromedaSettingsDialog(Dialog owner, java.awt.Frame parentFrame, AndromedaParameters andromedaParameters, boolean editable) { super(owner, true); this.editable = editable; initComponents(); setUpGUI(); populateGUI(andromedaParameters); validateInput(false); setLocationRelativeTo(owner); setVisible(true); } /** * Sets up the GUI. */ private void setUpGUI() { neutralLossesCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); fragMethodCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); fragmentAllCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); empiricalCorrectionCombo.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); higherChargeCombo.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); ammoniaLossCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); waterLossCombo.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); equalILCombo.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); decoyModeCmb.setRenderer(new com.compomics.util.gui.renderers.AlignedListCellRenderer(SwingConstants.CENTER)); minPepLengthNoEnzymeTxt.setEditable(editable); minPepLengthNoEnzymeTxt.setEnabled(editable); maxPepLengthNoEnzymeTxt.setEditable(editable); maxPepLengthNoEnzymeTxt.setEnabled(editable); maxPeptideMassTxt.setEditable(editable); maxPeptideMassTxt.setEnabled(editable); numberMatchesTxt.setEditable(editable); numberMatchesTxt.setEnabled(editable); maxPtmsTxt.setEditable(editable); maxPtmsTxt.setEnabled(editable); fragMethodCmb.setEnabled(editable); waterLossCombo.setEnabled(editable); ammoniaLossCmb.setEnabled(editable); neutralLossesCmb.setEnabled(editable); equalILCombo.setEnabled(editable); fragmentAllCmb.setEnabled(editable); empiricalCorrectionCombo.setEnabled(editable); higherChargeCombo.setEnabled(editable); maxCombinationsTxt.setEditable(editable); maxCombinationsTxt.setEnabled(editable); topPeaksTxt.setEditable(editable); topPeaksTxt.setEnabled(editable); topPeaksWindowTxt.setEditable(editable); topPeaksWindowTxt.setEnabled(editable); decoyModeCmb.setEnabled(editable); } /** * Populates the GUI using the given settings. * * @param andromedaParameters the parameters to display */ private void populateGUI(AndromedaParameters andromedaParameters) { minPepLengthNoEnzymeTxt.setText(andromedaParameters.getMinPeptideLengthNoEnzyme() + ""); maxPepLengthNoEnzymeTxt.setText(andromedaParameters.getMaxPeptideLengthNoEnzyme() + ""); maxPeptideMassTxt.setText(andromedaParameters.getMaxPeptideMass() + ""); numberMatchesTxt.setText(andromedaParameters.getNumberOfCandidates() + ""); maxPtmsTxt.setText(andromedaParameters.getMaxNumberOfModifications() + ""); if (andromedaParameters.getFragmentationMethod() == FragmentationMethod.CID) { fragMethodCmb.setSelectedIndex(0); } else if (andromedaParameters.getFragmentationMethod() == FragmentationMethod.HCD) { fragMethodCmb.setSelectedIndex(1); } else if (andromedaParameters.getFragmentationMethod() == FragmentationMethod.ETD) { fragMethodCmb.setSelectedIndex(2); } if (andromedaParameters.isIncludeWater()) { waterLossCombo.setSelectedIndex(0); } else { waterLossCombo.setSelectedIndex(1); } if (andromedaParameters.isIncludeAmmonia()) { ammoniaLossCmb.setSelectedIndex(0); } else { ammoniaLossCmb.setSelectedIndex(1); } if (andromedaParameters.isDependentLosses()) { neutralLossesCmb.setSelectedIndex(0); } else { neutralLossesCmb.setSelectedIndex(1); } if (andromedaParameters.isEqualIL()) { equalILCombo.setSelectedIndex(0); } else { equalILCombo.setSelectedIndex(1); } if (andromedaParameters.isFragmentAll()) { fragmentAllCmb.setSelectedIndex(0); } else { fragmentAllCmb.setSelectedIndex(1); } if (andromedaParameters.isEmpiricalCorrection()) { empiricalCorrectionCombo.setSelectedIndex(0); } else { empiricalCorrectionCombo.setSelectedIndex(1); } if (andromedaParameters.isHigherCharge()) { higherChargeCombo.setSelectedIndex(0); } else { higherChargeCombo.setSelectedIndex(1); } decoyModeCmb.setSelectedItem(andromedaParameters.getDecoyMode()); maxCombinationsTxt.setText(andromedaParameters.getMaxCombinations() + ""); topPeaksTxt.setText(andromedaParameters.getTopPeaks() + ""); topPeaksWindowTxt.setText(andromedaParameters.getTopPeaksWindow() + ""); } @Override public boolean isCancelled() { return cancelled; } @Override public IdentificationAlgorithmParameter getParameters() { return getInput(); } /** * Returns the user selection as Andromeda parameters object. * * @return the user selection */ public AndromedaParameters getInput() { AndromedaParameters result = new AndromedaParameters(); String input = minPepLengthNoEnzymeTxt.getText().trim(); if (!input.equals("")) { result.setMinPeptideLengthNoEnzyme(new Integer(input)); } input = maxPepLengthNoEnzymeTxt.getText().trim(); if (!input.equals("")) { result.setMaxPeptideLengthNoEnzyme(new Integer(input)); } input = maxPeptideMassTxt.getText().trim(); if (!input.equals("")) { result.setMaxPeptideMass(new Double(input)); } input = numberMatchesTxt.getText().trim(); if (!input.equals("")) { result.setNumberOfCandidates(new Integer(input)); } input = maxPtmsTxt.getText().trim(); if (!input.equals("")) { result.setMaxNumberOfModifications(new Integer(input)); } if (fragMethodCmb.getSelectedIndex() == 0) { result.setFragmentationMethod(FragmentationMethod.CID); } else if (fragMethodCmb.getSelectedIndex() == 1) { result.setFragmentationMethod(FragmentationMethod.HCD); } else { result.setFragmentationMethod(FragmentationMethod.ETD); } result.setIncludeWater(waterLossCombo.getSelectedIndex() == 0); result.setIncludeAmmonia(ammoniaLossCmb.getSelectedIndex() == 0); result.setDependentLosses(neutralLossesCmb.getSelectedIndex() == 0); result.setEqualIL(equalILCombo.getSelectedIndex() == 0); result.setFragmentAll(fragmentAllCmb.getSelectedIndex() == 0); result.setEmpiricalCorrection(empiricalCorrectionCombo.getSelectedIndex() == 0); result.setHigherCharge(higherChargeCombo.getSelectedIndex() == 0); input = maxCombinationsTxt.getText().trim(); if (!input.equals("")) { result.setMaxCombinations(new Integer(input)); } input = topPeaksTxt.getText().trim(); if (!input.equals("")) { result.setTopPeaks(new Integer(input)); } input = topPeaksWindowTxt.getText().trim(); if (!input.equals("")) { result.setTopPeaksWindow(new Integer(input)); } result.setDecoyMode((AndromedaDecoyMode) decoyModeCmb.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(); settingsPanel = new javax.swing.JPanel(); settingsScrollPane = new javax.swing.JScrollPane(); settingsInnerPanel = new javax.swing.JPanel(); peptideLengthNoEnzymeLabel = new javax.swing.JLabel(); minPepLengthNoEnzymeTxt = new javax.swing.JTextField(); peptideLengthNoEnzymeDividerLabel = new javax.swing.JLabel(); maxPepLengthNoEnzymeTxt = new javax.swing.JTextField(); maxPeptideMassLabel = new javax.swing.JLabel(); maxPeptideMassTxt = new javax.swing.JTextField(); numberMatchesLabel = new javax.swing.JLabel(); numberMatchesTxt = new javax.swing.JTextField(); fragMethodLabel = new javax.swing.JLabel(); fragMethodCmb = new javax.swing.JComboBox(); ammoniaLossLabel = new javax.swing.JLabel(); ammoniaLossCmb = new javax.swing.JComboBox(); maxPtmsLabel = new javax.swing.JLabel(); maxPtmsTxt = new javax.swing.JTextField(); empiricalCorrectionLabel = new javax.swing.JLabel(); empiricalCorrectionCombo = new javax.swing.JComboBox(); higherChargeLabel = new javax.swing.JLabel(); higherChargeCombo = new javax.swing.JComboBox(); topPeaksLabel = new javax.swing.JLabel(); topPeaksTxt = new javax.swing.JTextField(); neutralLossesLabel = new javax.swing.JLabel(); neutralLossesCmb = new javax.swing.JComboBox(); fragmentAllLabel = new javax.swing.JLabel(); fragmentAllCmb = new javax.swing.JComboBox(); maxCombinationsLabel = new javax.swing.JLabel(); maxCombinationsTxt = new javax.swing.JTextField(); topPeaksWindowLabel = new javax.swing.JLabel(); topPeaksWindowTxt = new javax.swing.JTextField(); waterLossLabel = new javax.swing.JLabel(); waterLossCombo = new javax.swing.JComboBox(); equalILLabel = new javax.swing.JLabel(); equalILCombo = new javax.swing.JComboBox(); decoyModeLabel = new javax.swing.JLabel(); decoyModeCmb = new javax.swing.JComboBox(); openDialogHelpJButton = new javax.swing.JButton(); advancedSettingsWarningLabel = new javax.swing.JLabel(); okButton = new javax.swing.JButton(); closeButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Andromeda Advanced Settings"); setMinimumSize(new java.awt.Dimension(400, 400)); backgroundPanel.setBackground(new java.awt.Color(230, 230, 230)); settingsPanel.setBackground(new java.awt.Color(230, 230, 230)); settingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Search Settings")); settingsPanel.setPreferredSize(new java.awt.Dimension(518, 143)); settingsScrollPane.setBorder(null); settingsInnerPanel.setBackground(new java.awt.Color(230, 230, 230)); peptideLengthNoEnzymeLabel.setText("Peptide Length No Enzyme"); minPepLengthNoEnzymeTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); minPepLengthNoEnzymeTxt.setText("8"); minPepLengthNoEnzymeTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { minPepLengthNoEnzymeTxtKeyReleased(evt); } }); peptideLengthNoEnzymeDividerLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); peptideLengthNoEnzymeDividerLabel.setText("-"); maxPepLengthNoEnzymeTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); maxPepLengthNoEnzymeTxt.setText("25"); maxPepLengthNoEnzymeTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { maxPepLengthNoEnzymeTxtKeyReleased(evt); } }); maxPeptideMassLabel.setText("Max Peptide Mass"); maxPeptideMassTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); maxPeptideMassTxt.setText("4600"); maxPeptideMassTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { maxPeptideMassTxtKeyReleased(evt); } }); numberMatchesLabel.setText("Number of Spectrum Matches"); numberMatchesTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); numberMatchesTxt.setText("10"); numberMatchesTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { numberMatchesTxtKeyReleased(evt); } }); fragMethodLabel.setText("Fragmentation Method"); fragMethodCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "CID", "HCD", "ETD" })); ammoniaLossLabel.setText("Ammonia Loss"); ammoniaLossCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" })); maxPtmsLabel.setText("Max Variable PTMs"); maxPtmsTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); maxPtmsTxt.setText("5"); maxPtmsTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { maxPtmsTxtKeyReleased(evt); } }); empiricalCorrectionLabel.setText("Empirical Correction"); empiricalCorrectionCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" })); higherChargeLabel.setText("Higher Charge"); higherChargeCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" })); topPeaksLabel.setText("Top Peaks"); topPeaksTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); topPeaksTxt.setText("8"); topPeaksTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { topPeaksTxtKeyReleased(evt); } }); neutralLossesLabel.setText("Sequence Dependent Neutral Loss"); neutralLossesCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" })); fragmentAllLabel.setText("Fragment All"); fragmentAllCmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" })); maxCombinationsLabel.setText("Max Combinations"); maxCombinationsTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); maxCombinationsTxt.setText("250"); maxCombinationsTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { maxCombinationsTxtKeyReleased(evt); } }); topPeaksWindowLabel.setText("Top Peaks Windows"); topPeaksWindowTxt.setHorizontalAlignment(javax.swing.JTextField.CENTER); topPeaksWindowTxt.setText("100"); topPeaksWindowTxt.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { topPeaksWindowTxtKeyReleased(evt); } }); waterLossLabel.setText("Water Loss"); waterLossCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" })); equalILLabel.setText("Equal I and L"); equalILCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Yes", "No" })); equalILCombo.setSelectedIndex(1); decoyModeLabel.setText("Decoy Mode"); decoyModeCmb.setModel(new DefaultComboBoxModel(AndromedaDecoyMode.values())); javax.swing.GroupLayout settingsInnerPanelLayout = new javax.swing.GroupLayout(settingsInnerPanel); settingsInnerPanel.setLayout(settingsInnerPanelLayout); settingsInnerPanelLayout.setHorizontalGroup( settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addComponent(peptideLengthNoEnzymeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(minPepLengthNoEnzymeTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(peptideLengthNoEnzymeDividerLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(7, 7, 7) .addComponent(maxPepLengthNoEnzymeTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 84, Short.MAX_VALUE)) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addComponent(maxPeptideMassLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(maxPeptideMassTxt)) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addComponent(numberMatchesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(numberMatchesTxt)) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addComponent(neutralLossesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(neutralLossesCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addComponent(ammoniaLossLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(ammoniaLossCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addComponent(waterLossLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(waterLossCombo, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, settingsInnerPanelLayout.createSequentialGroup() .addComponent(equalILLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(equalILCombo, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(maxPtmsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(fragMethodLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(21, 21, 21) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(fragMethodCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(maxPtmsTxt))) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(fragmentAllLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(empiricalCorrectionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(higherChargeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(21, 21, 21) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(empiricalCorrectionCombo, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(higherChargeCombo, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(fragmentAllCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(topPeaksWindowLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(maxCombinationsLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(topPeaksLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(21, 21, 21) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(topPeaksTxt) .addComponent(topPeaksWindowTxt) .addComponent(maxCombinationsTxt))) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addComponent(decoyModeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21) .addComponent(decoyModeCmb, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); settingsInnerPanelLayout.setVerticalGroup( settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(settingsInnerPanelLayout.createSequentialGroup() .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(minPepLengthNoEnzymeTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(maxPepLengthNoEnzymeTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(peptideLengthNoEnzymeDividerLabel) .addComponent(peptideLengthNoEnzymeLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(maxPeptideMassTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(maxPeptideMassLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.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(settingsInnerPanelLayout.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(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(fragMethodLabel) .addComponent(fragMethodCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(waterLossLabel) .addComponent(waterLossCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(ammoniaLossLabel) .addComponent(ammoniaLossCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(neutralLossesLabel) .addComponent(neutralLossesCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(equalILCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(equalILLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(fragmentAllLabel) .addComponent(fragmentAllCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(empiricalCorrectionLabel) .addComponent(empiricalCorrectionCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(higherChargeLabel) .addComponent(higherChargeCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(maxCombinationsLabel) .addComponent(maxCombinationsTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(topPeaksLabel) .addComponent(topPeaksTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(topPeaksWindowTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(topPeaksWindowLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(settingsInnerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(decoyModeLabel) .addComponent(decoyModeCmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); settingsScrollPane.setViewportView(settingsInnerPanel); javax.swing.GroupLayout settingsPanelLayout = new javax.swing.GroupLayout(settingsPanel); settingsPanel.setLayout(settingsPanelLayout); settingsPanelLayout.setHorizontalGroup( settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(settingsPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(settingsScrollPane) .addContainerGap()) ); settingsPanelLayout.setVerticalGroup( settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(settingsPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(settingsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 540, Short.MAX_VALUE) .addContainerGap()) ); 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 Andromeda help page."); 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); } }); javax.swing.GroupLayout backgroundPanelLayout = new javax.swing.GroupLayout(backgroundPanel); backgroundPanel.setLayout(backgroundPanelLayout); backgroundPanelLayout.setHorizontalGroup( backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(backgroundPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(settingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 453, Short.MAX_VALUE) .addGroup(backgroundPanelLayout.createSequentialGroup() .addGap(10, 10, 10) .addComponent(openDialogHelpJButton) .addGap(18, 18, 18) .addComponent(advancedSettingsWarningLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 92, 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(settingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 585, 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 Andromeda 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://coxdocs.org/doku.php?id=maxquant:andromeda:start"); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); }//GEN-LAST:event_openDialogHelpJButtonActionPerformed /** * Validate the input. * * @param evt */ private void topPeaksWindowTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_topPeaksWindowTxtKeyReleased validateInput(false); }//GEN-LAST:event_topPeaksWindowTxtKeyReleased /** * 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 minPepLengthNoEnzymeTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_minPepLengthNoEnzymeTxtKeyReleased validateInput(false); }//GEN-LAST:event_minPepLengthNoEnzymeTxtKeyReleased /** * Validate the input. * * @param evt */ private void maxPepLengthNoEnzymeTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxPepLengthNoEnzymeTxtKeyReleased validateInput(false); }//GEN-LAST:event_maxPepLengthNoEnzymeTxtKeyReleased /** * Validate the input. * * @param evt */ private void maxPeptideMassTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxPeptideMassTxtKeyReleased validateInput(false); }//GEN-LAST:event_maxPeptideMassTxtKeyReleased /** * Validate the input. * * @param evt */ private void topPeaksTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_topPeaksTxtKeyReleased validateInput(false); }//GEN-LAST:event_topPeaksTxtKeyReleased /** * Validate the input. * * @param evt */ private void maxCombinationsTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxCombinationsTxtKeyReleased validateInput(false); }//GEN-LAST:event_maxCombinationsTxtKeyReleased /** * Validate the input. * * @param evt */ private void numberMatchesTxtKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_numberMatchesTxtKeyReleased validateInput(false); }//GEN-LAST:event_numberMatchesTxtKeyReleased /** * Inspects the parameter 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, peptideLengthNoEnzymeLabel, minPepLengthNoEnzymeTxt, "minimum peptide length", "Peptide Length Error", true, showMessage, valid); valid = GuiUtilities.validateIntegerInput(this, peptideLengthNoEnzymeLabel, maxPepLengthNoEnzymeTxt, "minimum peptide length", "Peptide Length Error", true, showMessage, valid); valid = GuiUtilities.validateDoubleInput(this, maxPeptideMassLabel, maxPeptideMassTxt, "maximum peptide mass", "Peptide Mass Error", true, showMessage, valid); valid = GuiUtilities.validateIntegerInput(this, numberMatchesLabel, numberMatchesTxt, "number of spectrum matches", "Number of Spectrum Matches Error", true, showMessage, valid); valid = GuiUtilities.validateIntegerInput(this, maxPtmsLabel, maxPtmsTxt, "maximum number of variable PTMs", "Variable PTMs Error", true, showMessage, valid); valid = GuiUtilities.validateIntegerInput(this, maxCombinationsLabel, maxCombinationsTxt, "maximum combinations", "Max Combinations Error", true, showMessage, valid); valid = GuiUtilities.validateIntegerInput(this, topPeaksLabel, topPeaksTxt, "top peaks", "Top Peaks Error", true, showMessage, valid); valid = GuiUtilities.validateIntegerInput(this, topPeaksWindowLabel, topPeaksWindowTxt, "top peaks window", "Top Peaks Window Error", true, showMessage, valid); // peptide length: the low value should be lower than the high value try { double lowValue = Double.parseDouble(minPepLengthNoEnzymeTxt.getText().trim()); double highValue = Double.parseDouble(maxPepLengthNoEnzymeTxt.getText().trim()); if (lowValue > highValue) { if (showMessage && valid) { JOptionPane.showMessageDialog(this, "The lower range value has to be smaller than the upper range value.", "Peptide Length Error", JOptionPane.WARNING_MESSAGE); } valid = false; peptideLengthNoEnzymeLabel.setForeground(Color.RED); peptideLengthNoEnzymeLabel.setToolTipText("Please select a valid range (upper <= higher)"); } } catch (NumberFormatException e) { // ignore, handled above } okButton.setEnabled(valid); return valid; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel advancedSettingsWarningLabel; private javax.swing.JComboBox ammoniaLossCmb; private javax.swing.JLabel ammoniaLossLabel; private javax.swing.JPanel backgroundPanel; private javax.swing.JButton closeButton; private javax.swing.JComboBox decoyModeCmb; private javax.swing.JLabel decoyModeLabel; private javax.swing.JComboBox empiricalCorrectionCombo; private javax.swing.JLabel empiricalCorrectionLabel; private javax.swing.JComboBox equalILCombo; private javax.swing.JLabel equalILLabel; private javax.swing.JComboBox fragMethodCmb; private javax.swing.JLabel fragMethodLabel; private javax.swing.JComboBox fragmentAllCmb; private javax.swing.JLabel fragmentAllLabel; private javax.swing.JComboBox higherChargeCombo; private javax.swing.JLabel higherChargeLabel; private javax.swing.JLabel maxCombinationsLabel; private javax.swing.JTextField maxCombinationsTxt; private javax.swing.JTextField maxPepLengthNoEnzymeTxt; private javax.swing.JLabel maxPeptideMassLabel; private javax.swing.JTextField maxPeptideMassTxt; private javax.swing.JLabel maxPtmsLabel; private javax.swing.JTextField maxPtmsTxt; private javax.swing.JTextField minPepLengthNoEnzymeTxt; private javax.swing.JComboBox neutralLossesCmb; private javax.swing.JLabel neutralLossesLabel; private javax.swing.JLabel numberMatchesLabel; private javax.swing.JTextField numberMatchesTxt; private javax.swing.JButton okButton; private javax.swing.JButton openDialogHelpJButton; private javax.swing.JLabel peptideLengthNoEnzymeDividerLabel; private javax.swing.JLabel peptideLengthNoEnzymeLabel; private javax.swing.JPanel settingsInnerPanel; private javax.swing.JPanel settingsPanel; private javax.swing.JScrollPane settingsScrollPane; private javax.swing.JLabel topPeaksLabel; private javax.swing.JTextField topPeaksTxt; private javax.swing.JLabel topPeaksWindowLabel; private javax.swing.JTextField topPeaksWindowTxt; private javax.swing.JComboBox waterLossCombo; private javax.swing.JLabel waterLossLabel; // End of variables declaration//GEN-END:variables }