From a60e6d18bcbd5759e012dca07e588a46dd4700ea Mon Sep 17 00:00:00 2001 From: Fred Kruse Date: Fri, 3 Mar 2023 15:17:41 +0100 Subject: [PATCH] [LO extension] correct display of disabled default rules --- .../org/languagetool/gui/Configuration.java | 8 +++ .../languagetool/gui/ConfigurationDialog.java | 21 ++++++-- .../openoffice/MultiDocumentsHandler.java | 54 ++++++++++++------- 3 files changed, 58 insertions(+), 25 deletions(-) diff --git a/languagetool-gui-commons/src/main/java/org/languagetool/gui/Configuration.java b/languagetool-gui-commons/src/main/java/org/languagetool/gui/Configuration.java index 077c71973825..50673c109fad 100644 --- a/languagetool-gui-commons/src/main/java/org/languagetool/gui/Configuration.java +++ b/languagetool-gui-commons/src/main/java/org/languagetool/gui/Configuration.java @@ -433,6 +433,14 @@ public void removeDisabledRuleIds(Set ruleIds) { enabledRuleIds.addAll(ruleIds); } + public void removeDisabledRuleId(String ruleId) { + disabledRuleIds.remove(ruleId); + } + + public void removeEnabledRuleId(String ruleId) { + enabledRuleIds.remove(ruleId); + } + public void setEnabledRuleIds(Set ruleIds) { enabledRuleIds = ruleIds; } diff --git a/languagetool-gui-commons/src/main/java/org/languagetool/gui/ConfigurationDialog.java b/languagetool-gui-commons/src/main/java/org/languagetool/gui/ConfigurationDialog.java index 7f82d800cf0a..10056d0c2d31 100644 --- a/languagetool-gui-commons/src/main/java/org/languagetool/gui/ConfigurationDialog.java +++ b/languagetool-gui-commons/src/main/java/org/languagetool/gui/ConfigurationDialog.java @@ -1663,20 +1663,31 @@ private JPanel getChangedRulesPanel(List rules, boolean enabledRules, JPan cons.fill = GridBagConstraints.NONE; cons.insets = new Insets(4, 3, 0, 4); - Set changedRuleIds; + List changedRuleIds; if (enabledRules) { - changedRuleIds = config.getEnabledRuleIds(); + changedRuleIds = new ArrayList(config.getEnabledRuleIds()); } else { - changedRuleIds = config.getDisabledRuleIds(); + changedRuleIds = new ArrayList(config.getDisabledRuleIds()); } if (changedRuleIds != null) { List ruleCheckboxes = new ArrayList<>(); - for (String ruleId : changedRuleIds) { + for (int i = changedRuleIds.size() - 1; i >= 0; i--) { + String ruleId = changedRuleIds.get(i); String ruleDescription = null; for (Rule rule : rules) { if (rule.getId().equals(ruleId)) { - ruleDescription = rule.getDescription(); + if ((enabledRules && rule.isDefaultOff() && !rule.isOfficeDefaultOn()) || + (!enabledRules && (!rule.isDefaultOff() || rule.isOfficeDefaultOn()))) { + ruleDescription = rule.getDescription(); + } else { + if (enabledRules) { + config.removeEnabledRuleId(ruleId); + } else { + config.removeDisabledRuleId(ruleId); + } + } + break; } } diff --git a/languagetool-office-extension/src/main/java/org/languagetool/openoffice/MultiDocumentsHandler.java b/languagetool-office-extension/src/main/java/org/languagetool/openoffice/MultiDocumentsHandler.java index c8ad65bf360f..4f5c4169e75e 100644 --- a/languagetool-office-extension/src/main/java/org/languagetool/openoffice/MultiDocumentsHandler.java +++ b/languagetool-office-extension/src/main/java/org/languagetool/openoffice/MultiDocumentsHandler.java @@ -493,29 +493,43 @@ Map getDisabledRulesMap(String langCode) { langCode = OfficeTools.localeToString(locale); } Map disabledRulesMap = new HashMap<>(); - List allRules = lt.getAllRules(); - for (String disabledRule : getDisabledRules(langCode)) { - String ruleDesc = null; - for (Rule rule : allRules) { - if (disabledRule.equals(rule.getId())) { - ruleDesc = rule.getDescription(); - break; + if (langCode != null && lt != null && config != null) { + List allRules = lt.getAllRules(); + List disabledRules = new ArrayList(getDisabledRules(langCode)); + for (int i = disabledRules.size() - 1; i >= 0; i--) { + String disabledRule = disabledRules.get(i); + String ruleDesc = null; + for (Rule rule : allRules) { + if (disabledRule.equals(rule.getId())) { + if (!rule.isDefaultOff() || rule.isOfficeDefaultOn()) { + ruleDesc = rule.getDescription(); + } else { + removeDisabledRule(langCode, disabledRule); + } + break; + } } - } - if (ruleDesc != null) { - disabledRulesMap.put(disabledRule, ruleDesc); - } - } - for (String disabledRule : config.getDisabledRuleIds()) { - String ruleDesc = null; - for (Rule rule : allRules) { - if (disabledRule.equals(rule.getId())) { - ruleDesc = rule.getDescription(); - break; + if (ruleDesc != null) { + disabledRulesMap.put(disabledRule, ruleDesc); } } - if (ruleDesc != null) { - disabledRulesMap.put(disabledRule, ruleDesc); + disabledRules = new ArrayList(config.getDisabledRuleIds()); + for (int i = disabledRules.size() - 1; i >= 0; i--) { + String disabledRule = disabledRules.get(i); + String ruleDesc = null; + for (Rule rule : allRules) { + if (disabledRule.equals(rule.getId())) { + if (!rule.isDefaultOff() || rule.isOfficeDefaultOn()) { + ruleDesc = rule.getDescription(); + } else { + config.removeDisabledRuleId(disabledRule); + } + break; + } + } + if (ruleDesc != null) { + disabledRulesMap.put(disabledRule, ruleDesc); + } } } return disabledRulesMap;