summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java')
-rw-r--r--platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java47
1 files changed, 32 insertions, 15 deletions
diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java
index 145ae1094e0b..a77e5cce28f0 100644
--- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java
+++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java
@@ -527,35 +527,52 @@ public class ArrangementMatchingRulesControl extends JBTable {
private class MyValidator {
@Nullable
private String validate(int index) {
- if (mySectionRuleManager == null || getModel().getSize() < index) {
+ if (getModel().getSize() < index) {
return null;
}
+ if (mySectionRuleManager != null) {
+ final ArrangementSectionRuleData data = extractSectionText(index);
+ if (data != null) {
+ return validateSectionRule(data, index);
+ }
+ }
+
+ final Object target = getModel().getElementAt(index);
+ if (target instanceof StdArrangementMatchRule) {
+ for (int i = 0; i < index; i++) {
+ final Object element = getModel().getElementAt(i);
+ if (element instanceof StdArrangementMatchRule && target.equals(element)) {
+ return ApplicationBundle.message("arrangement.settings.validation.duplicate.matching.rule");
+ }
+ }
+ }
+ return null;
+ }
+
+ @Nullable
+ private String validateSectionRule(@NotNull ArrangementSectionRuleData data, int index) {
int startSectionIndex = -1;
- final Set<String> rules = ContainerUtil.newHashSet();
+ final Set<String> sectionRules = ContainerUtil.newHashSet();
for (int i = 0; i < index; i++) {
final ArrangementSectionRuleData section = extractSectionText(i);
if (section != null) {
startSectionIndex = section.isSectionStart() ? i : -1;
if (StringUtil.isNotEmpty(section.getText())) {
- rules.add(section.getText());
+ sectionRules.add(section.getText());
}
}
}
+ if (StringUtil.isNotEmpty(data.getText()) && sectionRules.contains(data.getText())) {
+ return ApplicationBundle.message("arrangement.settings.validation.duplicate.section.text");
+ }
- final ArrangementSectionRuleData data = extractSectionText(index);
- if (data != null) {
- if (StringUtil.isNotEmpty(data.getText()) && rules.contains(data.getText())) {
- return ApplicationBundle.message("arrangement.settings.validation.duplicate.section.text");
+ if (!data.isSectionStart()) {
+ if (startSectionIndex == -1) {
+ return ApplicationBundle.message("arrangement.settings.validation.end.section.rule.without.start");
}
-
- if (!data.isSectionStart()) {
- if (startSectionIndex == -1) {
- return ApplicationBundle.message("arrangement.settings.validation.end.section.rule.without.start");
- }
- else if (startSectionIndex == index - 1) {
- return ApplicationBundle.message("arrangement.settings.validation.empty.section.rule");
- }
+ else if (startSectionIndex == index - 1) {
+ return ApplicationBundle.message("arrangement.settings.validation.empty.section.rule");
}
}
return null;