@Override
  public void actionPerformed(ActionEvent e) {

    Object src = e.getSource();

    if (src == thresholdCombo) {

      PeakThresholdMode mode = (PeakThresholdMode) this.thresholdCombo.getSelectedItem();

      switch (mode) {
        case ABOVE_INTENSITY_PEAKS:
          peakTextField.setText(String.valueOf(thresholdSettings.getIntensityThreshold()));
          peakTextField.setEnabled(true);
          break;
        case ALL_PEAKS:
          peakTextField.setEnabled(false);
          break;
        case TOP_PEAKS:
        case TOP_PEAKS_AREA:
          peakTextField.setText(String.valueOf(thresholdSettings.getTopPeaksThreshold()));
          peakTextField.setEnabled(true);
          break;
      }

      thresholdSettings.setMode(mode);
    }

    if (src == peakTextField) {
      PeakThresholdMode mode = (PeakThresholdMode) this.thresholdCombo.getSelectedItem();
      String value = peakTextField.getText();
      switch (mode) {
        case ABOVE_INTENSITY_PEAKS:
          double topInt = Double.parseDouble(value);
          thresholdSettings.setIntensityThreshold(topInt);
          break;
        case TOP_PEAKS:
        case TOP_PEAKS_AREA:
          int topPeaks = Integer.parseInt(value);
          thresholdSettings.setTopPeaksThreshold(topPeaks);
          break;
        default:
          break;
      }
    }

    PeakList selectedPeakList = getPeaksInThreshold();
    if (selectedPeakList != null) masterFrame.getPlot().loadPeakList(selectedPeakList);
  }
  /**
   * Returns a peak list different peaks depending on the selected option of the "peak Threshold"
   * combo box
   */
  PeakList getPeaksInThreshold() {

    PeakList selectedPeakList = (PeakList) peakListSelector.getSelectedItem();
    PeakThresholdMode mode = (PeakThresholdMode) thresholdCombo.getSelectedItem();

    switch (mode) {
      case ABOVE_INTENSITY_PEAKS:
        double threshold = thresholdSettings.getIntensityThreshold();
        return getIntensityThresholdPeakList(threshold);

      case ALL_PEAKS:
        return selectedPeakList;
      case TOP_PEAKS:
      case TOP_PEAKS_AREA:
        int topPeaks = thresholdSettings.getTopPeaksThreshold();
        return getTopThresholdPeakList(topPeaks);
    }

    return null;
  }
  MsMsBottomPanel(MsMsVisualizerWindow masterFrame, RawDataFile dataFile, ParameterSet parameters) {

    this.dataFile = dataFile;
    this.masterFrame = masterFrame;

    setLayout(new BoxLayout(this, BoxLayout.X_AXIS));

    setBackground(Color.white);
    setBorder(new EmptyBorder(5, 5, 5, 0));

    add(Box.createHorizontalGlue());

    GUIUtils.addLabel(this, "Show: ", SwingConstants.RIGHT);

    thresholdCombo = new JComboBox<Object>(PeakThresholdMode.values());
    thresholdCombo.setSelectedItem(PeakThresholdMode.NONE);
    thresholdCombo.setBackground(Color.white);
    thresholdCombo.setFont(smallFont);
    thresholdCombo.addActionListener(this);
    add(thresholdCombo);

    JPanel peakThresholdPanel = new JPanel();
    peakThresholdPanel.setBackground(Color.white);
    peakThresholdPanel.setLayout(new BoxLayout(peakThresholdPanel, BoxLayout.X_AXIS));

    GUIUtils.addLabel(peakThresholdPanel, "Value: ", SwingConstants.RIGHT);

    peakTextField = new JTextField();
    peakTextField.setPreferredSize(new Dimension(50, 15));
    peakTextField.setFont(smallFont);
    peakTextField.addActionListener(this);
    peakThresholdPanel.add(peakTextField);
    add(peakThresholdPanel);

    GUIUtils.addLabel(this, " from peak list: ", SwingConstants.RIGHT);

    peakListSelector = new JComboBox<PeakList>();
    peakListSelector.setBackground(Color.white);
    peakListSelector.setFont(smallFont);
    peakListSelector.addActionListener(masterFrame);
    peakListSelector.setActionCommand("PEAKLIST_CHANGE");
    add(peakListSelector);

    thresholdSettings = parameters.getParameter(MsMsParameters.peakThresholdSettings);

    thresholdCombo.setSelectedItem(thresholdSettings.getMode());

    add(Box.createHorizontalStrut(10));

    add(Box.createHorizontalGlue());
  }