package com.compomics.util.gui.parameters.identification_parameters;
import com.compomics.util.experiment.filtering.Filter;
import com.compomics.util.experiment.identification.protein_sequences.SequenceFactory;
import com.compomics.util.preferences.ValidationQCPreferences;
import java.awt.Dialog;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
/**
* Dialog for the edition of validation QC filters.
*
* @author Marc Vaudel
*/
public class ValidationQCPreferencesDialog extends javax.swing.JDialog {
/**
* A parent handling the edition of filters.
*/
private ValidationQCPreferencesDialogParent validationQCPreferencesDialogParent;
/**
* List of the PSM quality filters.
*/
private ArrayList<Filter> psmFilters = new ArrayList<Filter>();
/**
* List of the peptide quality filters.
*/
private ArrayList<Filter> peptideFilters = new ArrayList<Filter>();
/**
* List of the protein quality filters.
*/
private ArrayList<Filter> proteinFilters = new ArrayList<Filter>();
/**
* Boolean indicating whether the dialog was canceled.
*/
boolean canceled = false;
/**
* Boolean indicating whether the filters have been changed.
*/
private boolean filtersChanged = false;
/**
* Boolean indicating whether the settings can be edited by the user.
*/
private boolean editable;
/**
* Creates a new ValidationQCPreferencesDialog with a frame as owner.
*
* @param parent the parent frame
* @param validationQCPreferencesDialogParent a parent handling the edition
* of filters
* @param validationQCPreferences the validation QC preferences
* @param editable boolean indicating whether the settings can be edited by the user
*/
public ValidationQCPreferencesDialog(java.awt.Frame parent, ValidationQCPreferencesDialogParent validationQCPreferencesDialogParent, ValidationQCPreferences validationQCPreferences, boolean editable) {
super(parent, true);
initComponents();
this.validationQCPreferencesDialogParent = validationQCPreferencesDialogParent;
this.editable = editable;
ArrayList<Filter> originalPsmFilters = validationQCPreferences.getPsmFilters();
if (originalPsmFilters != null) {
for (Filter filter : originalPsmFilters) {
psmFilters.add(filter.clone());
}
} else {
psmFilters = new ArrayList<Filter>();
}
ArrayList<Filter> originalPeptidesFilters = validationQCPreferences.getPeptideFilters();
if (originalPeptidesFilters != null) {
for (Filter filter : originalPeptidesFilters) {
peptideFilters.add(filter.clone());
}
} else {
peptideFilters = new ArrayList<Filter>();
}
ArrayList<Filter> originalProteinFilters = validationQCPreferences.getProteinFilters();
if (originalProteinFilters != null) {
for (Filter filter : originalProteinFilters) {
proteinFilters.add(filter.clone());
}
} else {
proteinFilters = new ArrayList<Filter>();
}
setUpGUI(validationQCPreferences);
setLocationRelativeTo(parent);
setVisible(true);
}
/**
* Creates a new ValidationQCPreferencesDialog with a dialog as owner.
*
* @param owner the dialog owner
* @param parent the parent frame
* @param validationQCPreferencesDialogParent a parent handling the edition
* of filters
* @param validationQCPreferences the validation QC preferences
* @param editable boolean indicating whether the settings can be edited by the user
*/
public ValidationQCPreferencesDialog(Dialog owner, java.awt.Frame parent, ValidationQCPreferencesDialogParent validationQCPreferencesDialogParent, ValidationQCPreferences validationQCPreferences, boolean editable) {
super(owner, true);
initComponents();
this.validationQCPreferencesDialogParent = validationQCPreferencesDialogParent;
this.editable = editable;
ArrayList<Filter> originalPsmFilters = validationQCPreferences.getPsmFilters();
if (originalPsmFilters != null) {
for (Filter filter : originalPsmFilters) {
psmFilters.add(filter.clone());
}
} else {
psmFilters = new ArrayList<Filter>();
}
ArrayList<Filter> originalPeptidesFilters = validationQCPreferences.getPeptideFilters();
if (originalPeptidesFilters != null) {
for (Filter filter : originalPeptidesFilters) {
peptideFilters.add(filter.clone());
}
} else {
peptideFilters = new ArrayList<Filter>();
}
ArrayList<Filter> originalProteinFilters = validationQCPreferences.getProteinFilters();
if (originalProteinFilters != null) {
for (Filter filter : originalProteinFilters) {
proteinFilters.add(filter.clone());
}
} else {
proteinFilters = new ArrayList<Filter>();
}
setUpGUI(validationQCPreferences);
setLocationRelativeTo(owner);
setVisible(true);
}
/**
* Fills the GUI according to the validation QC preferences.
*
* @param validationQCPreferences the validation QC preferences
*/
private void setUpGUI(ValidationQCPreferences validationQCPreferences) {
dbCheck.setSelected(validationQCPreferences.isDbSize());
nTargetCheck.setSelected(validationQCPreferences.isFirstDecoy());
confidenceCheck.setSelected(validationQCPreferences.getConfidenceMargin() != 0.0);
psmTable.getColumn(" ").setMaxWidth(30);
peptideTable.getColumn(" ").setMaxWidth(30);
proteinTable.getColumn(" ").setMaxWidth(30);
// make sure that the scroll panes are see-through
proteinScrollPane.getViewport().setOpaque(false);
peptideScrollPane.getViewport().setOpaque(false);
psmScrollPane.getViewport().setOpaque(false);
proteinTable.getTableHeader().setReorderingAllowed(false);
peptideTable.getTableHeader().setReorderingAllowed(false);
psmTable.getTableHeader().setReorderingAllowed(false);
dbCheck.setEnabled(editable);
nTargetCheck.setEnabled(editable);
confidenceCheck.setEnabled(editable);
}
/**
* 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() {
psmPopupMenu = new javax.swing.JPopupMenu();
addPsmFilterMenuItem = new javax.swing.JMenuItem();
editPsmFilterMenuItem = new javax.swing.JMenuItem();
removePsmFilterMenuItem = new javax.swing.JMenuItem();
peptidePopupMenu = new javax.swing.JPopupMenu();
addPeptideFilterMenuItem = new javax.swing.JMenuItem();
editPeptideFilterMenuItem = new javax.swing.JMenuItem();
removePeptideFilterMenuItem = new javax.swing.JMenuItem();
proteinPopupMenu = new javax.swing.JPopupMenu();
addProteinFilterMenuItem = new javax.swing.JMenuItem();
editProteinFilterMenuItem = new javax.swing.JMenuItem();
removeProteinFilterMenuItem = new javax.swing.JMenuItem();
validationQCPreferencesDialogPanel = new javax.swing.JPanel();
generalSettingsPanel = new javax.swing.JPanel();
dbCheck = new javax.swing.JCheckBox();
nTargetCheck = new javax.swing.JCheckBox();
markDoubtfulLabel = new javax.swing.JLabel();
confidenceCheck = new javax.swing.JCheckBox();
proteinFiltersPanel = new javax.swing.JPanel();
proteinScrollPane = new javax.swing.JScrollPane();
proteinTable = new javax.swing.JTable();
peptideFiltersPanel = new javax.swing.JPanel();
peptideScrollPane = new javax.swing.JScrollPane();
peptideTable = new javax.swing.JTable();
psmFiltersPanel = new javax.swing.JPanel();
psmScrollPane = new javax.swing.JScrollPane();
psmTable = new javax.swing.JTable();
helpLbl = new javax.swing.JLabel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
addPsmFilterMenuItem.setText("Add Filter");
addPsmFilterMenuItem.setToolTipText("Add a new filter");
addPsmFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addPsmFilterMenuItemActionPerformed(evt);
}
});
psmPopupMenu.add(addPsmFilterMenuItem);
editPsmFilterMenuItem.setText("Edit Filter");
editPsmFilterMenuItem.setToolTipText("Edit the selected filter");
editPsmFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editPsmFilterMenuItemActionPerformed(evt);
}
});
psmPopupMenu.add(editPsmFilterMenuItem);
removePsmFilterMenuItem.setText("Remove Filter");
removePsmFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removePsmFilterMenuItemActionPerformed(evt);
}
});
psmPopupMenu.add(removePsmFilterMenuItem);
addPeptideFilterMenuItem.setText("Add Filter");
addPeptideFilterMenuItem.setToolTipText("Add a new filter");
addPeptideFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addPeptideFilterMenuItemActionPerformed(evt);
}
});
peptidePopupMenu.add(addPeptideFilterMenuItem);
editPeptideFilterMenuItem.setText("Edit Filter");
editPeptideFilterMenuItem.setToolTipText("Edit the selected filter");
editPeptideFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editPeptideFilterMenuItemActionPerformed(evt);
}
});
peptidePopupMenu.add(editPeptideFilterMenuItem);
removePeptideFilterMenuItem.setText("Remove Filter");
removePeptideFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removePeptideFilterMenuItemActionPerformed(evt);
}
});
peptidePopupMenu.add(removePeptideFilterMenuItem);
addProteinFilterMenuItem.setText("Add Filter");
addProteinFilterMenuItem.setToolTipText("Add a new filter");
addProteinFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addProteinFilterMenuItemActionPerformed(evt);
}
});
proteinPopupMenu.add(addProteinFilterMenuItem);
editProteinFilterMenuItem.setText("Edit Filter");
editProteinFilterMenuItem.setToolTipText("Edit the selected filter");
editProteinFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editProteinFilterMenuItemActionPerformed(evt);
}
});
proteinPopupMenu.add(editProteinFilterMenuItem);
removeProteinFilterMenuItem.setText("Remove Filter");
removeProteinFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeProteinFilterMenuItemActionPerformed(evt);
}
});
proteinPopupMenu.add(removeProteinFilterMenuItem);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Validation QC Filters (beta)");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
validationQCPreferencesDialogPanel.setBackground(new java.awt.Color(230, 230, 230));
generalSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("General Settings"));
generalSettingsPanel.setOpaque(false);
dbCheck.setText("Hits obtained on small databases (<" + SequenceFactory.minProteinCount + " protein sequences)");
dbCheck.setIconTextGap(15);
dbCheck.setOpaque(false);
nTargetCheck.setText("Datasets with a low number of target hits");
nTargetCheck.setIconTextGap(15);
nTargetCheck.setOpaque(false);
markDoubtfulLabel.setText("Mark as Doubtful");
confidenceCheck.setText("Hits near the confidence threshold (margin= 1 x resolution)");
confidenceCheck.setIconTextGap(15);
confidenceCheck.setOpaque(false);
javax.swing.GroupLayout generalSettingsPanelLayout = new javax.swing.GroupLayout(generalSettingsPanel);
generalSettingsPanel.setLayout(generalSettingsPanelLayout);
generalSettingsPanelLayout.setHorizontalGroup(
generalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(generalSettingsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(generalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(generalSettingsPanelLayout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(generalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(confidenceCheck)
.addComponent(dbCheck)
.addComponent(nTargetCheck)))
.addComponent(markDoubtfulLabel))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
generalSettingsPanelLayout.setVerticalGroup(
generalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(generalSettingsPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(markDoubtfulLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(dbCheck)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(nTargetCheck)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(confidenceCheck)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
proteinFiltersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Protein Filters"));
proteinFiltersPanel.setOpaque(false);
proteinScrollPane.setOpaque(false);
proteinScrollPane.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
proteinScrollPaneMouseReleased(evt);
}
});
proteinTable.setModel(new FiltersTableModel(proteinFilters));
proteinTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
proteinTableMouseReleased(evt);
}
});
proteinScrollPane.setViewportView(proteinTable);
javax.swing.GroupLayout proteinFiltersPanelLayout = new javax.swing.GroupLayout(proteinFiltersPanel);
proteinFiltersPanel.setLayout(proteinFiltersPanelLayout);
proteinFiltersPanelLayout.setHorizontalGroup(
proteinFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(proteinFiltersPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(proteinScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 735, Short.MAX_VALUE)
.addContainerGap())
);
proteinFiltersPanelLayout.setVerticalGroup(
proteinFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(proteinFiltersPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(proteinScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 123, Short.MAX_VALUE)
.addContainerGap())
);
peptideFiltersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Peptide Filters"));
peptideFiltersPanel.setOpaque(false);
peptideScrollPane.setOpaque(false);
peptideScrollPane.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
peptideScrollPaneMouseReleased(evt);
}
});
peptideTable.setModel(new FiltersTableModel(peptideFilters));
peptideTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
peptideTableMouseReleased(evt);
}
});
peptideScrollPane.setViewportView(peptideTable);
javax.swing.GroupLayout peptideFiltersPanelLayout = new javax.swing.GroupLayout(peptideFiltersPanel);
peptideFiltersPanel.setLayout(peptideFiltersPanelLayout);
peptideFiltersPanelLayout.setHorizontalGroup(
peptideFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(peptideFiltersPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(peptideScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 735, Short.MAX_VALUE)
.addContainerGap())
);
peptideFiltersPanelLayout.setVerticalGroup(
peptideFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(peptideFiltersPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(peptideScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 123, Short.MAX_VALUE)
.addContainerGap())
);
psmFiltersPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("PSM Filters"));
psmFiltersPanel.setOpaque(false);
psmScrollPane.setOpaque(false);
psmScrollPane.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
psmScrollPaneMouseReleased(evt);
}
});
psmTable.setModel(new FiltersTableModel(psmFilters));
psmTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
psmTableMouseReleased(evt);
}
});
psmScrollPane.setViewportView(psmTable);
javax.swing.GroupLayout psmFiltersPanelLayout = new javax.swing.GroupLayout(psmFiltersPanel);
psmFiltersPanel.setLayout(psmFiltersPanelLayout);
psmFiltersPanelLayout.setHorizontalGroup(
psmFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(psmFiltersPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(psmScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 735, Short.MAX_VALUE)
.addContainerGap())
);
psmFiltersPanelLayout.setVerticalGroup(
psmFiltersPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(psmFiltersPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(psmScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE)
.addContainerGap())
);
helpLbl.setFont(new java.awt.Font("Tahoma", 2, 11)); // NOI18N
helpLbl.setText("Right-click in the tables to edit the filters.");
okButton.setText("OK");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout validationQCPreferencesDialogPanelLayout = new javax.swing.GroupLayout(validationQCPreferencesDialogPanel);
validationQCPreferencesDialogPanel.setLayout(validationQCPreferencesDialogPanelLayout);
validationQCPreferencesDialogPanelLayout.setHorizontalGroup(
validationQCPreferencesDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(validationQCPreferencesDialogPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(validationQCPreferencesDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(validationQCPreferencesDialogPanelLayout.createSequentialGroup()
.addGap(14, 14, 14)
.addComponent(helpLbl)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cancelButton))
.addComponent(generalSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(peptideFiltersPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(psmFiltersPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(proteinFiltersPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
validationQCPreferencesDialogPanelLayout.setVerticalGroup(
validationQCPreferencesDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, validationQCPreferencesDialogPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(generalSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(proteinFiltersPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(peptideFiltersPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(psmFiltersPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(validationQCPreferencesDialogPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cancelButton)
.addComponent(okButton)
.addComponent(helpLbl))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(validationQCPreferencesDialogPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(validationQCPreferencesDialogPanel, 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 changes.
*
* @param evt
*/
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
canceled = true;
dispose();
}//GEN-LAST:event_cancelButtonActionPerformed
/**
* Close the dialog.
*
* @param evt
*/
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
if (!filtersChanged) {
canceled = true;
}
dispose();
}//GEN-LAST:event_okButtonActionPerformed
/**
* Add a new PSM filter.
*
* @param evt
*/
private void addPsmFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addPsmFilterMenuItemActionPerformed
Filter newFilter = validationQCPreferencesDialogParent.createPsmFilter();
if (newFilter != null) {
psmFilters.add(newFilter);
((DefaultTableModel) psmTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}
}//GEN-LAST:event_addPsmFilterMenuItemActionPerformed
/**
* Edit a PSM filter.
*
* @param evt
*/
private void editPsmFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editPsmFilterMenuItemActionPerformed
int row = psmTable.getSelectedRow();
Filter selectedFilter = psmFilters.get(row);
Filter editedFilter = validationQCPreferencesDialogParent.editFilter(selectedFilter);
if (editedFilter != null) {
psmFilters.set(row, editedFilter);
((DefaultTableModel) psmTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}
}//GEN-LAST:event_editPsmFilterMenuItemActionPerformed
/**
* Show the PSM filter popup menu or edit a PSM filter.
*
* @param evt
*/
private void psmTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_psmTableMouseReleased
if (evt != null && psmTable.rowAtPoint(evt.getPoint()) != -1) {
int row = psmTable.rowAtPoint(evt.getPoint());
psmTable.setRowSelectionInterval(row, row);
}
if (evt != null && evt.getButton() == MouseEvent.BUTTON3 && editable) {
editPsmFilterMenuItem.setVisible(psmTable.getSelectedRow() != -1);
removePsmFilterMenuItem.setVisible(psmTable.getSelectedRow() != -1);
psmPopupMenu.show(psmTable, evt.getX(), evt.getY());
}
if (evt != null && evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2 && editable) {
editPsmFilterMenuItemActionPerformed(null);
}
}//GEN-LAST:event_psmTableMouseReleased
/**
* Add a new peptide filter.
*
* @param evt
*/
private void addPeptideFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addPeptideFilterMenuItemActionPerformed
Filter newFilter = validationQCPreferencesDialogParent.createPeptideFilter();
if (newFilter != null) {
peptideFilters.add(newFilter);
((DefaultTableModel) peptideTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}
}//GEN-LAST:event_addPeptideFilterMenuItemActionPerformed
/**
* Edit a peptide filter.
*
* @param evt
*/
private void editPeptideFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editPeptideFilterMenuItemActionPerformed
int row = peptideTable.getSelectedRow();
Filter selectedFilter = peptideFilters.get(row);
Filter editedFilter = validationQCPreferencesDialogParent.editFilter(selectedFilter);
if (editedFilter != null) {
peptideFilters.set(row, editedFilter);
((DefaultTableModel) peptideTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}
}//GEN-LAST:event_editPeptideFilterMenuItemActionPerformed
/**
* Add a new protein filter.
*
* @param evt
*/
private void addProteinFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addProteinFilterMenuItemActionPerformed
Filter newFilter = validationQCPreferencesDialogParent.createProteinFilter();
if (newFilter != null) {
proteinFilters.add(newFilter);
((DefaultTableModel) proteinTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}
}//GEN-LAST:event_addProteinFilterMenuItemActionPerformed
/**
* Edit a protein filter.
*
* @param evt
*/
private void editProteinFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editProteinFilterMenuItemActionPerformed
int row = proteinTable.getSelectedRow();
Filter selectedFilter = proteinFilters.get(row);
Filter editedFilter = validationQCPreferencesDialogParent.editFilter(selectedFilter);
if (editedFilter != null) {
proteinFilters.set(row, editedFilter);
((DefaultTableModel) proteinTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}
}//GEN-LAST:event_editProteinFilterMenuItemActionPerformed
/**
* Show the peptide filter popup menu or edit a peptide filter.
*
* @param evt
*/
private void peptideTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_peptideTableMouseReleased
if (evt != null && peptideTable.rowAtPoint(evt.getPoint()) != -1) {
int row = peptideTable.rowAtPoint(evt.getPoint());
peptideTable.setRowSelectionInterval(row, row);
}
if (evt != null && evt.getButton() == MouseEvent.BUTTON3 && editable) {
editPeptideFilterMenuItem.setVisible(peptideTable.getSelectedRow() != -1);
removePeptideFilterMenuItem.setVisible(peptideTable.getSelectedRow() != -1);
peptidePopupMenu.show(peptideTable, evt.getX(), evt.getY());
}
if (evt != null && evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2 && editable) {
editPeptideFilterMenuItemActionPerformed(null);
}
}//GEN-LAST:event_peptideTableMouseReleased
/**
* Show the protein filter popup menu or edit a protein filter.
*
* @param evt
*/
private void proteinTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_proteinTableMouseReleased
if (evt != null && proteinTable.rowAtPoint(evt.getPoint()) != -1) {
int row = proteinTable.rowAtPoint(evt.getPoint());
proteinTable.setRowSelectionInterval(row, row);
}
if (evt != null && evt.getButton() == MouseEvent.BUTTON3 && editable) {
editProteinFilterMenuItem.setVisible(proteinTable.getSelectedRow() != -1);
removeProteinFilterMenuItem.setVisible(proteinTable.getSelectedRow() != -1);
proteinPopupMenu.show(proteinTable, evt.getX(), evt.getY());
}
if (evt != null && evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2 && editable) {
editProteinFilterMenuItemActionPerformed(null);
}
}//GEN-LAST:event_proteinTableMouseReleased
/**
* Remove a protein filter.
*
* @param evt
*/
private void removeProteinFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeProteinFilterMenuItemActionPerformed
int row = proteinTable.getSelectedRow();
proteinFilters.remove(row);
((DefaultTableModel) proteinTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}//GEN-LAST:event_removeProteinFilterMenuItemActionPerformed
/**
* Remove a peptide filter.
*
* @param evt
*/
private void removePeptideFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removePeptideFilterMenuItemActionPerformed
int row = peptideTable.getSelectedRow();
peptideFilters.remove(row);
((DefaultTableModel) peptideTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}//GEN-LAST:event_removePeptideFilterMenuItemActionPerformed
/**
* Remove a PSM filter.
*
* @param evt
*/
private void removePsmFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removePsmFilterMenuItemActionPerformed
int row = psmTable.getSelectedRow();
psmFilters.remove(row);
((DefaultTableModel) psmTable.getModel()).fireTableDataChanged();
filtersChanged = true;
}//GEN-LAST:event_removePsmFilterMenuItemActionPerformed
/**
* Show the protein filter popup menu or edit a protein filter.
*
* @param evt
*/
private void proteinScrollPaneMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_proteinScrollPaneMouseReleased
proteinTableMouseReleased(evt);
}//GEN-LAST:event_proteinScrollPaneMouseReleased
/**
* Closes the dialog without saving.
*
* @param evt
*/
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
canceled = true;
}//GEN-LAST:event_formWindowClosing
/**
* Show the peptide filter popup menu or edit a peptide filter.
*
* @param evt
*/
private void peptideScrollPaneMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_peptideScrollPaneMouseReleased
peptideTableMouseReleased(evt);
}//GEN-LAST:event_peptideScrollPaneMouseReleased
/**
* Show the PSM filter popup menu or edit a PSM filter.
*
* @param evt
*/
private void psmScrollPaneMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_psmScrollPaneMouseReleased
psmTableMouseReleased(evt);
}//GEN-LAST:event_psmScrollPaneMouseReleased
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JMenuItem addPeptideFilterMenuItem;
private javax.swing.JMenuItem addProteinFilterMenuItem;
private javax.swing.JMenuItem addPsmFilterMenuItem;
private javax.swing.JButton cancelButton;
private javax.swing.JCheckBox confidenceCheck;
private javax.swing.JCheckBox dbCheck;
private javax.swing.JMenuItem editPeptideFilterMenuItem;
private javax.swing.JMenuItem editProteinFilterMenuItem;
private javax.swing.JMenuItem editPsmFilterMenuItem;
private javax.swing.JPanel generalSettingsPanel;
private javax.swing.JLabel helpLbl;
private javax.swing.JLabel markDoubtfulLabel;
private javax.swing.JCheckBox nTargetCheck;
private javax.swing.JButton okButton;
private javax.swing.JPanel peptideFiltersPanel;
private javax.swing.JPopupMenu peptidePopupMenu;
private javax.swing.JScrollPane peptideScrollPane;
private javax.swing.JTable peptideTable;
private javax.swing.JPanel proteinFiltersPanel;
private javax.swing.JPopupMenu proteinPopupMenu;
private javax.swing.JScrollPane proteinScrollPane;
private javax.swing.JTable proteinTable;
private javax.swing.JPanel psmFiltersPanel;
private javax.swing.JPopupMenu psmPopupMenu;
private javax.swing.JScrollPane psmScrollPane;
private javax.swing.JTable psmTable;
private javax.swing.JMenuItem removePeptideFilterMenuItem;
private javax.swing.JMenuItem removeProteinFilterMenuItem;
private javax.swing.JMenuItem removePsmFilterMenuItem;
private javax.swing.JPanel validationQCPreferencesDialogPanel;
// End of variables declaration//GEN-END:variables
/**
* Indicates whether the preference edition was canceled by the user.
*
* @return a boolean indicating whether the preference edition was canceled
* by the user
*/
public boolean isCanceled() {
return canceled;
}
/**
* Returns the validation QC preferences as set by the user.
*
* @return the validation QC preferences as set by the user
*/
public ValidationQCPreferences getValidationQCPreferences() {
ValidationQCPreferences validationQCPreferences = new ValidationQCPreferences();
validationQCPreferences.setDbSize(dbCheck.isSelected());
validationQCPreferences.setFirstDecoy(nTargetCheck.isSelected());
if (!confidenceCheck.isSelected()) {
validationQCPreferences.setConfidenceMargin(0.0);
} else {
validationQCPreferences.setConfidenceMargin(1.0);
}
validationQCPreferences.setPsmFilters(psmFilters);
validationQCPreferences.setPeptideFilters(peptideFilters);
validationQCPreferences.setProteinFilters(proteinFilters);
return validationQCPreferences;
}
/**
* Table model for a filters table.
*/
private class FiltersTableModel extends DefaultTableModel {
/**
* List of filters to display.
*/
private ArrayList<Filter> filters;
/**
* Creates a new table model.
*/
public FiltersTableModel(ArrayList<Filter> filters) {
this.filters = filters;
}
@Override
public int getRowCount() {
if (filters == null) {
return 0;
}
return filters.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return " ";
case 1:
return "Name";
case 2:
return "Description";
default:
return "";
}
}
@Override
public Object getValueAt(int row, int column) {
Filter filter = filters.get(row);
switch (column) {
case 0:
return row + 1;
case 1:
return filter.getName();
case 2:
return filter.getDescription();
default:
return "";
}
}
@Override
public Class getColumnClass(int columnIndex) {
for (int i = 0; i < getRowCount(); i++) {
if (getValueAt(i, columnIndex) != null) {
return getValueAt(i, columnIndex).getClass();
}
}
return String.class;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
}
}