package com.compomics.util.gui.parameters; import com.compomics.util.experiment.identification.identification_parameters.IdentificationParametersFactory; import com.compomics.util.preferences.IdentificationParameters; import java.awt.Component; import java.awt.Dialog; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.table.DefaultTableModel; /** * IdentificationParametersOverviewDialog. * * @author Marc Vaudel * @author Harald Barsnes */ public class IdentificationParametersOverviewDialog extends javax.swing.JDialog { /** * The identification parameters factory. */ private IdentificationParametersFactory identificationParametersFactory = IdentificationParametersFactory.getInstance(); /** * Constructor with a dialog as owner. * * @param owner the owner */ public IdentificationParametersOverviewDialog(Dialog owner) { super(owner, true); initComponents(); setUpGui(); setLocationRelativeTo(owner); setVisible(true); } /** * Constructor with a frame as owner. * * @param parentFrame the parent frame */ public IdentificationParametersOverviewDialog(java.awt.Frame parentFrame) { super(parentFrame, true); initComponents(); setUpGui(); setLocationRelativeTo(parentFrame); setVisible(true); } /** * Set up the GUI. */ private void setUpGui() { settingsTable.getColumn(" ").setMinWidth(50); settingsTable.getColumn(" ").setMaxWidth(50); settingsTable.getTableHeader().setReorderingAllowed(false); settingsTableScrollPane.getViewport().setOpaque(false); } /** * Updates the parameters table. */ public void updateTable() { ((DefaultTableModel) settingsTable.getModel()).fireTableDataChanged(); settingsTable.getColumn(" ").setMinWidth(50); settingsTable.getColumn(" ").setMaxWidth(50); } /** * Returns the selected identification parameters. * * @return the identification parameters */ public IdentificationParameters getIdentificationParameters() { String identificationParametersName = getSelectedParametersName(); return identificationParametersFactory.getIdentificationParameters(identificationParametersName); } /** * 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() { parametersPopupMenu = new javax.swing.JPopupMenu(); removeMenuItem = new javax.swing.JMenuItem(); backgroundPanel = new javax.swing.JPanel(); okButton = new javax.swing.JButton(); tablePanel = new javax.swing.JPanel(); settingsTableScrollPane = new javax.swing.JScrollPane(); settingsTable = new javax.swing.JTable(); helpLbl = new javax.swing.JLabel(); removeMenuItem.setText("Delete"); removeMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { removeMenuItemActionPerformed(evt); } }); parametersPopupMenu.add(removeMenuItem); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Identification Settings"); backgroundPanel.setBackground(new java.awt.Color(230, 230, 230)); okButton.setText("OK"); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); tablePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Overview")); tablePanel.setOpaque(false); settingsTableScrollPane.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseReleased(java.awt.event.MouseEvent evt) { settingsTableScrollPaneMouseReleased(evt); } }); settingsTable.setModel(new SettingsTableModel()); settingsTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); settingsTable.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseReleased(java.awt.event.MouseEvent evt) { settingsTableMouseReleased(evt); } }); settingsTableScrollPane.setViewportView(settingsTable); javax.swing.GroupLayout tablePanelLayout = new javax.swing.GroupLayout(tablePanel); tablePanel.setLayout(tablePanelLayout); tablePanelLayout.setHorizontalGroup( tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(tablePanelLayout.createSequentialGroup() .addContainerGap() .addComponent(settingsTableScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 602, Short.MAX_VALUE) .addContainerGap()) ); tablePanelLayout.setVerticalGroup( tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(tablePanelLayout.createSequentialGroup() .addContainerGap() .addComponent(settingsTableScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE) .addContainerGap()) ); helpLbl.setText("Right-click in the table for options"); javax.swing.GroupLayout backgroundPanelLayout = new javax.swing.GroupLayout(backgroundPanel); backgroundPanel.setLayout(backgroundPanelLayout); backgroundPanelLayout.setHorizontalGroup( backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(backgroundPanelLayout.createSequentialGroup() .addGroup(backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(backgroundPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(tablePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(backgroundPanelLayout.createSequentialGroup() .addGap(30, 30, 30) .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))) .addContainerGap()) ); backgroundPanelLayout.setVerticalGroup( backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, backgroundPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(tablePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .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(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 /** * Handles clicking in the settings table. * * @param evt */ private void settingsTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_settingsTableMouseReleased parametersTableClicked(evt, settingsTable); }//GEN-LAST:event_settingsTableMouseReleased /** * Handles clicking in the settings table scroll pane. * * @param evt */ private void settingsTableScrollPaneMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_settingsTableScrollPaneMouseReleased parametersTableClicked(evt, settingsTableScrollPane); }//GEN-LAST:event_settingsTableScrollPaneMouseReleased /** * Remove the selected parameter. * * @param evt */ private void removeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeMenuItemActionPerformed remove(getSelectedParametersName()); }//GEN-LAST:event_removeMenuItemActionPerformed /** * Close the dialog. * * @param evt */ private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed dispose(); }//GEN-LAST:event_okButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel backgroundPanel; private javax.swing.JLabel helpLbl; private javax.swing.JButton okButton; private javax.swing.JPopupMenu parametersPopupMenu; private javax.swing.JMenuItem removeMenuItem; private javax.swing.JTable settingsTable; private javax.swing.JScrollPane settingsTableScrollPane; private javax.swing.JPanel tablePanel; // End of variables declaration//GEN-END:variables /** * Handles the clicking of the table. * * @param evt the click event * @param invoker the component in whose space the popup menu is to appear */ private void parametersTableClicked(java.awt.event.MouseEvent evt, Component invoker) { int selectedRow = -1; if (evt != null && settingsTable.rowAtPoint(evt.getPoint()) != -1) { selectedRow = settingsTable.rowAtPoint(evt.getPoint()); } if (selectedRow != -1) { settingsTable.setRowSelectionInterval(selectedRow, selectedRow); } else { settingsTable.removeRowSelectionInterval(0, settingsTable.getRowCount() - 1); } if (evt != null && evt.getButton() == MouseEvent.BUTTON3) { // Disable edition menus if no row is selected removeMenuItem.setVisible(selectedRow != -1); // Show popup menu parametersPopupMenu.show(invoker, evt.getX(), evt.getY()); } } /** * Returns the name of the parameters selected in the parameters table. * * @return the name of the parameters selected in the parameters table */ private String getSelectedParametersName() { int row = settingsTable.getSelectedRow(); if (row < 0 || row >= settingsTable.getRowCount()) { return null; } return settingsTable.getValueAt(row, 1).toString(); } /** * Removes the given parameters. * * @param parametersName the name of the parameters to remove */ private void remove(String parametersName) { identificationParametersFactory.removeIdentificationParameters(parametersName); updateTable(); } /** * Table model for the neutral losses table. */ private class SettingsTableModel extends DefaultTableModel { /** * List of parameters available. */ private ArrayList<String> parametersNames; /** * Constructor. */ public SettingsTableModel() { } @Override public int getRowCount() { if (identificationParametersFactory == null) { return 0; } parametersNames = identificationParametersFactory.getParametersList(); return parametersNames.size(); } @Override public int getColumnCount() { return 2; } @Override public String getColumnName(int column) { switch (column) { case 0: return " "; case 1: return "Name"; default: return ""; } } @Override public Object getValueAt(int row, int column) { switch (column) { case 0: return row + 1; case 1: String parameterName = parametersNames.get(row); IdentificationParameters identificationParameters = identificationParametersFactory.getIdentificationParameters(parameterName); return identificationParameters.getName(); 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; } } }