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;
}
}
}