/**
   * Updates the available settings according to the opened file. This should be called e.g. after
   * loading a PIA intermediate file
   */
  public void applyLoadedSettings(NodeSettingsRO settings) {

    checkCreatePSMSets.setSelected(
        settings.getBoolean(
            PIASettings.CREATE_PSMSETS.getKey(), PIASettings.CREATE_PSMSETS.getDefaultBoolean()));
    fdrThreshold.setValue(
        settings.getDouble(
            PIASettings.FDR_THRESHOLD.getKey(), PIASettings.FDR_THRESHOLD.getDefaultDouble()));

    if (settings
        .getString(
            PIASettings.ALL_DECOY_STRATEGY.getKey(),
            PIASettings.ALL_DECOY_STRATEGY.getDefaultString())
        .equals(FDRData.DecoyStrategy.ACCESSIONPATTERN.toString())) {
      decoyStrategy_pattern.setSelected(true);
    } else {
      decoyStrategy_searchengine.setSelected(true);
    }

    decoyPattern_pattern.setText(
        settings.getString(
            PIASettings.ALL_DECOY_PATTERN.getKey(),
            PIASettings.ALL_DECOY_PATTERN.getDefaultString()));

    if (settings.getInt(
            PIASettings.ALL_USED_IDENTIFICATIONS.getKey(),
            PIASettings.ALL_USED_IDENTIFICATIONS.getDefaultInteger())
        == 0) {
      usedIdentifications_all.setSelected(true);
    } else {
      usedIdentifications_top.setSelected(true);
    }

    preferredScoresModel.removeAllElements();
    for (String scoreShort :
        settings.getStringArray(
            PIASettings.FDR_PREFERRED_SCORES.getKey(),
            PIASettings.FDR_PREFERRED_SCORES.getDefaultStringArray())) {
      ScoreModelEnum modelType = ScoreModelEnum.getModelByDescription(scoreShort);
      ScoreModel model;

      if (modelType.equals(ScoreModelEnum.UNKNOWN_SCORE)) {
        model = new ScoreModel(0.0, scoreShort, scoreShort);
      } else {
        model = new ScoreModel(0.0, modelType);
      }

      preferredScoresModel.addElement(model);
    }
  }
  /**
   * creates a settings map with the current settings
   *
   * @param key
   * @return
   */
  public Map<String, Object> getSettings() {
    HashMap<String, Object> settings = new HashMap<String, Object>();

    settings.put(PIASettings.CREATE_PSMSETS.getKey(), checkCreatePSMSets.isSelected());
    settings.put(PIASettings.FDR_THRESHOLD.getKey(), (Double) fdrThreshold.getValue());

    settings.put(
        PIASettings.ALL_DECOY_STRATEGY.getKey(),
        decoyStrategyGroup.getSelection().getActionCommand());
    settings.put(PIASettings.ALL_DECOY_PATTERN.getKey(), decoyPattern_pattern.getText());
    settings.put(
        PIASettings.ALL_USED_IDENTIFICATIONS.getKey(),
        Integer.parseInt(usedIdentificationsGroup.getSelection().getActionCommand()));

    String[] preferredScoreShorts = new String[preferredScoresModel.getSize()];
    for (int i = 0; i < preferredScoresModel.getSize(); i++) {
      preferredScoreShorts[i] = preferredScoresModel.getElementAt(i).getShortName();
    }
    settings.put(PIASettings.FDR_PREFERRED_SCORES.getKey(), preferredScoreShorts);

    return settings;
  }