Do not allow to create alias with invalid name (IDEA-154452)

This commit is contained in:
Yaroslav Lepenkin
2016-04-11 10:58:11 +03:00
parent 27d2b27658
commit 279d77211d
2 changed files with 24 additions and 2 deletions
@@ -17,17 +17,22 @@ package com.intellij.application.options.codeStyle.arrangement.match.tokens;
import com.intellij.application.options.codeStyle.arrangement.color.ArrangementColorsProvider;
import com.intellij.openapi.options.UnnamedConfigurable;
import com.intellij.openapi.ui.InputValidator;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.NamedItemsListEditor;
import com.intellij.openapi.ui.Namer;
import com.intellij.openapi.util.Cloner;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Factory;
import com.intellij.psi.codeStyle.arrangement.std.StdArrangementRuleAliasToken;
import com.intellij.psi.codeStyle.arrangement.std.ArrangementStandardSettingsManager;
import com.intellij.psi.codeStyle.arrangement.std.StdArrangementRuleAliasToken;
import gnu.trove.Equality;
import org.jdom.Verifier;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.text.MessageFormat;
import java.util.List;
import java.util.Set;
@@ -106,4 +111,21 @@ public class ArrangementRuleAliasesListEditor extends NamedItemsListEditor<StdAr
public String getDisplayName() {
return "Custom Composite Tokens";
}
@Nullable
@Override
public String askForProfileName(String titlePattern) {
String title = MessageFormat.format(titlePattern, subjDisplayName());
return Messages.showInputDialog("New " + subjDisplayName() + " name:", title, Messages.getQuestionIcon(), "", new InputValidator() {
@Override
public boolean checkInput(String s) {
return s.length() > 0 && findByName(s) == null && Verifier.checkElementName(s) == null;
}
@Override
public boolean canClose(String s) {
return checkInput(s);
}
});
}
}
@@ -122,7 +122,7 @@ public abstract class NamedItemsListEditor<T> extends MasterDetailsComponent {
}
@Nullable
private T findByName(String name) {
protected T findByName(String name) {
for (T item : myItems) {
if (Comparing.equal(name, myNamer.getName(item))) return item;
}