private void saveConfigForCurrentProfile()

in languagetool-gui-commons/src/main/java/org/languagetool/gui/Configuration.java [1825:2008]


  private void saveConfigForCurrentProfile(Properties props, String prefix, String qualifier) {
    if (!disabledRuleIds.isEmpty()) {
      addListToProperties(props, prefix + DISABLED_RULES_KEY + qualifier, disabledRuleIds);
    }
    if (!enabledRuleIds.isEmpty()) {
      addListToProperties(props, prefix + ENABLED_RULES_KEY + qualifier, enabledRuleIds);
    }
    if (!disabledCategoryNames.isEmpty()) {
      addListToProperties(props, prefix + DISABLED_CATEGORIES_KEY + qualifier, disabledCategoryNames);
    }
    if (!enabledCategoryNames.isEmpty()) {
      addListToProperties(props, prefix + ENABLED_CATEGORIES_KEY + qualifier, enabledCategoryNames);
    }
    if (language != null && !language.isExternal()) {  // external languages won't be known at startup, so don't save them
      props.setProperty(prefix + LANGUAGE_KEY, language.getShortCodeWithCountryAndVariant());
    }
    if (fixedLanguage != null) {
      props.setProperty(prefix + FIXED_LANGUAGE_KEY, fixedLanguage.getShortCodeWithCountryAndVariant());
    }
    if (ngramDirectory != null) {
      props.setProperty(prefix + NGRAM_DIR_KEY, ngramDirectory.getAbsolutePath());
    }
    props.setProperty(prefix + AUTO_DETECT_KEY, Boolean.toString(autoDetect));
    props.setProperty(prefix + TAGGER_SHOWS_DISAMBIG_LOG_KEY, Boolean.toString(taggerShowsDisambigLog));
    props.setProperty(prefix + USE_GUI_KEY, Boolean.toString(guiConfig));
    props.setProperty(prefix + SERVER_RUN_KEY, Boolean.toString(runServer));
    props.setProperty(prefix + SERVER_PORT_KEY, Integer.toString(serverPort));
    if (numParasToCheck != DEFAULT_NUM_CHECK_PARAS) {
      props.setProperty(prefix + NO_DEFAULT_CHECK_KEY, Boolean.toString(true));
      props.setProperty(prefix + PARA_CHECK_KEY, Integer.toString(numParasToCheck));
    }
    if (doResetCheck != DEFAULT_DO_RESET) {
      props.setProperty(prefix + RESET_CHECK_KEY, Boolean.toString(doResetCheck));
    }
    if (useTextLevelQueue != DEFAULT_USE_QUEUE) {
      props.setProperty(prefix + USE_QUEUE_KEY, Boolean.toString(useTextLevelQueue));
    }
    if (noBackgroundCheck != DEFAULT_NO_BACKGROUND_CHECK) {
      props.setProperty(prefix + NO_BACKGROUND_CHECK_KEY, Boolean.toString(noBackgroundCheck));
    }
    if (useDocLanguage != DEFAULT_USE_DOC_LANGUAGE) {
      props.setProperty(prefix + USE_DOC_LANG_KEY, Boolean.toString(useDocLanguage));
    }
    if (isMultiThreadLO != DEFAULT_MULTI_THREAD) {
      props.setProperty(prefix + IS_MULTI_THREAD_LO_KEY, Boolean.toString(isMultiThreadLO));
    }
    if (doRemoteCheck != DEFAULT_DO_REMOTE_CHECK) {
      props.setProperty(prefix + DO_REMOTE_CHECK_KEY, Boolean.toString(doRemoteCheck));
    }
    if (useOtherServer != DEFAULT_USE_OTHER_SERVER) {
      props.setProperty(prefix + USE_OTHER_SERVER_KEY, Boolean.toString(useOtherServer));
    }
    if (isPremium != DEFAULT_IS_PREMIUM) {
      props.setProperty(prefix + IS_PREMIUM_KEY, Boolean.toString(isPremium));
    }
    if (markSingleCharBold != DEFAULT_MARK_SINGLE_CHAR_BOLD) {
      props.setProperty(prefix + MARK_SINGLE_CHAR_BOLD_KEY, Boolean.toString(markSingleCharBold));
    }
    if (useLtSpellChecker != DEFAULT_USE_LT_SPELL_CHECKER) {
      props.setProperty(prefix + USE_LT_SPELL_CHECKER_KEY, Boolean.toString(useLtSpellChecker));
    }
    if (noSynonymsAsSuggestions != DEFAULT_NO_SYNONYMS_AS_SUGGESTIONS) {
      props.setProperty(prefix + NO_SYNONYMS_AS_SUGGESTIONS_KEY, Boolean.toString(noSynonymsAsSuggestions));
    }
    if (includeTrackedChanges != DEFAULT_INCLUDE_TRACKED_CHANGES) {
      props.setProperty(prefix + INCLUDE_TRACKED_CHANGES_KEY, Boolean.toString(includeTrackedChanges));
    }
    if (enableTmpOffRules != DEFAULT_ENABLE_TMP_OFF_RULES) {
      props.setProperty(prefix + ENABLE_TMP_OFF_RULES_KEY, Boolean.toString(enableTmpOffRules));
    }
    if (enableGoalSpecificRules != DEFAULT_ENABLE_GOAL_SPECIFIC_RULES) {
      props.setProperty(prefix + ENABLE_GOAL_SPECIFIC_RULES_KEY, Boolean.toString(enableGoalSpecificRules));
    }
    if (filterOverlappingMatches != DEFAULT_FILTER_OVERLAPPING_MATCHES) {
      props.setProperty(prefix + FILTER_OVERLAPPING_MATCHES_KEY, Boolean.toString(filterOverlappingMatches));
    }
    if (saveLoCache != DEFAULT_SAVE_LO_CACHE) {
      props.setProperty(prefix + SAVE_LO_CACHE_KEY, Boolean.toString(saveLoCache));
    }
    if (switchOff) {
      props.setProperty(prefix + LT_SWITCHED_OFF_KEY, Boolean.toString(switchOff));
    }
    if (otherServerUrl != null && isValidServerUrl(otherServerUrl)) {
      props.setProperty(prefix + OTHER_SERVER_URL_KEY, otherServerUrl);
    }
    if (remoteUsername != null) {
      props.setProperty(prefix + REMOTE_USERNAME_KEY, remoteUsername);
    }
    if (remoteApiKey != null) {
      props.setProperty(prefix + REMOTE_APIKEY_KEY, remoteApiKey);
    }
    if (aiUrl != null) {
      props.setProperty(prefix + AI_URL_KEY, aiUrl);
    }
    if (aiModel != null) {
      props.setProperty(prefix + AI_MODEL_KEY, aiModel);
    }
    if (aiApiKey != null) {
      props.setProperty(prefix + AI_APIKEY_KEY, aiApiKey);
    }
    if (useAiSupport != DEFAULT_USE_AI_SUPPORT) {
      props.setProperty(prefix + AI_USE_AI_SUPPORT_KEY, Boolean.toString(useAiSupport));
    }
    if (aiAutoCorrect != DEFAULT_AI_AUTO_CORRECT) {
      props.setProperty(prefix + AI_AUTO_CORRECT_KEY, Boolean.toString(aiAutoCorrect));
    }
    if (this.aiShowStylisticChanges != DEFAULT_AI_SHOW_STYLISTIC_CHANGES) {
      props.setProperty(prefix + AI_SHOW_STYLISTIC_CHANGES_KEY, Boolean.toString(aiShowStylisticChanges));
    }
    if (fontName != null) {
      props.setProperty(prefix + FONT_NAME_KEY, fontName);
    }
    if (fontStyle != FONT_STYLE_INVALID) {
      props.setProperty(prefix + FONT_STYLE_KEY, Integer.toString(fontStyle));
    }
    if (fontSize != FONT_SIZE_INVALID) {
      props.setProperty(prefix + FONT_SIZE_KEY, Integer.toString(fontSize));
    }
    if (this.lookAndFeelName != null) {
      props.setProperty(prefix + LF_NAME_KEY, lookAndFeelName);
    }
    if (externalRuleDirectory != null) {
      props.setProperty(prefix + EXTERNAL_RULE_DIRECTORY, externalRuleDirectory);
    }
    if (!configurableRuleValues.isEmpty()) {
      StringBuilder sbRV = new StringBuilder();
      int i = 0;
      for (Map.Entry<String, Object[]> entry : configurableRuleValues.entrySet()) {
        Object[] obs = entry.getValue();
        if (obs != null && obs.length > 0) {
          if (i > 0) {
            sbRV.append(",");
          }
          sbRV.append(entry.getKey()).append(':').append(RuleOption.objectsToString(obs));
          i++;
        }
      }
      props.setProperty(prefix + CONFIGURABLE_RULE_VALUES_KEY + qualifier, sbRV.toString());
    }
    if (!errorColors.isEmpty()) {
      StringBuilder sb = new StringBuilder();
      for (Map.Entry<ITSIssueType, Color> entry : errorColors.entrySet()) {
        String rgb = Integer.toHexString(entry.getValue().getRGB());
        rgb = rgb.substring(2);
        sb.append(entry.getKey()).append(":#").append(rgb).append(", ");
      }
      props.setProperty(prefix + ERROR_COLORS_KEY, sb.toString());
    }
    if (!underlineColors.isEmpty()) {
      StringBuilder sbUC = new StringBuilder();
      for (Map.Entry<String, Color> entry : underlineColors.entrySet()) {
        String rgb = Integer.toHexString(entry.getValue().getRGB());
        rgb = rgb.substring(2);
        sbUC.append(entry.getKey()).append(":#").append(rgb).append(", ");
      }
      props.setProperty(prefix + UNDERLINE_COLORS_KEY, sbUC.toString());
    }
    if (!underlineRuleColors.isEmpty()) {
      StringBuilder sbUC = new StringBuilder();
      for (Map.Entry<String, Color> entry : underlineRuleColors.entrySet()) {
        String rgb = Integer.toHexString(entry.getValue().getRGB());
        rgb = rgb.substring(2);
        sbUC.append(entry.getKey()).append(":#").append(rgb).append(", ");
      }
      props.setProperty(prefix + UNDERLINE_RULE_COLORS_KEY, sbUC.toString());
    }
    if (!underlineTypes.isEmpty()) {
      StringBuilder sbUT = new StringBuilder();
      for (Map.Entry<String, Short> entry : underlineTypes.entrySet()) {
        sbUT.append(entry.getKey()).append(':').append(entry.getValue()).append(", ");
      }
      props.setProperty(prefix + UNDERLINE_TYPES_KEY, sbUT.toString());
    }
    if (!underlineRuleTypes.isEmpty()) {
      StringBuilder sbUT = new StringBuilder();
      for (Map.Entry<String, Short> entry : underlineRuleTypes.entrySet()) {
        sbUT.append(entry.getKey()).append(':').append(entry.getValue()).append(", ");
      }
      props.setProperty(prefix + UNDERLINE_RULE_TYPES_KEY, sbUT.toString());
    }
    for (String key : configForOtherLanguages.keySet()) {
      props.setProperty(key, configForOtherLanguages.get(key));
    }
  }