use of com.intellij.psi.codeStyle.arrangement.model.ArrangementMatchConditionVisitor in project intellij-community by JetBrains.
the class StdArrangementExtendableSettings method removeAliasRuleToken.
@NotNull
private static ArrangementCompositeMatchCondition removeAliasRuleToken(final ArrangementMatchCondition original) {
final ArrangementCompositeMatchCondition composite = new ArrangementCompositeMatchCondition();
original.invite(new ArrangementMatchConditionVisitor() {
@Override
public void visit(@NotNull ArrangementAtomMatchCondition condition) {
if (!ArrangementUtil.isAliasedCondition(condition)) {
composite.addOperand(condition);
}
}
@Override
public void visit(@NotNull ArrangementCompositeMatchCondition condition) {
for (ArrangementMatchCondition c : condition.getOperands()) {
c.invite(this);
}
}
});
return composite;
}
use of com.intellij.psi.codeStyle.arrangement.model.ArrangementMatchConditionVisitor in project intellij-community by JetBrains.
the class StdArrangementExtendableSettings method getRuleSequence.
@Nullable
private List<StdArrangementMatchRule> getRuleSequence(@NotNull final StdArrangementMatchRule rule, @NotNull final Map<String, StdArrangementRuleAliasToken> tokenIdToDefinition) {
final List<StdArrangementMatchRule> seqRule = ContainerUtil.newSmartList();
rule.getMatcher().getCondition().invite(new ArrangementMatchConditionVisitor() {
@Override
public void visit(@NotNull ArrangementAtomMatchCondition condition) {
final StdArrangementRuleAliasToken token = tokenIdToDefinition.get(condition.getType().getId());
if (token != null && !token.getDefinitionRules().isEmpty()) {
seqRule.addAll(token.getDefinitionRules());
}
}
@Override
public void visit(@NotNull ArrangementCompositeMatchCondition condition) {
for (ArrangementMatchCondition operand : condition.getOperands()) {
if (!seqRule.isEmpty()) {
return;
}
operand.invite(this);
}
}
});
return seqRule;
}
use of com.intellij.psi.codeStyle.arrangement.model.ArrangementMatchConditionVisitor in project intellij-community by JetBrains.
the class ArrangementSectionRulesControl method createRuleAliasEditDialog.
@NotNull
public ArrangementRuleAliasDialog createRuleAliasEditDialog() {
final Set<String> tokenIds = new THashSet<>();
final List<ArrangementSectionRule> sections = getSections();
for (ArrangementSectionRule section : sections) {
for (StdArrangementMatchRule rule : section.getMatchRules()) {
rule.getMatcher().getCondition().invite(new ArrangementMatchConditionVisitor() {
@Override
public void visit(@NotNull ArrangementAtomMatchCondition condition) {
if (ArrangementUtil.isAliasedCondition(condition)) {
tokenIds.add(condition.getType().getId());
}
}
@Override
public void visit(@NotNull ArrangementCompositeMatchCondition condition) {
for (ArrangementMatchCondition operand : condition.getOperands()) {
operand.invite(this);
}
}
});
}
}
final Collection<StdArrangementRuleAliasToken> aliases = getRulesAliases();
assert aliases != null;
return new ArrangementRuleAliasDialog(null, mySettingsManager, myColorsProvider, aliases, tokenIds);
}
use of com.intellij.psi.codeStyle.arrangement.model.ArrangementMatchConditionVisitor in project intellij-community by JetBrains.
the class ArrangementSectionRuleManager method getSectionRuleData.
@Nullable
public ArrangementSectionRuleData getSectionRuleData(@NotNull ArrangementMatchCondition condition) {
final Ref<Boolean> isStart = new Ref<>();
final Ref<String> text = new Ref<>();
condition.invite(new ArrangementMatchConditionVisitor() {
@Override
public void visit(@NotNull ArrangementAtomMatchCondition condition) {
final ArrangementSettingsToken type = condition.getType();
if (type.equals(START_SECTION)) {
isStart.set(true);
} else if (type.equals(END_SECTION)) {
isStart.set(false);
} else if (type.equals(TEXT)) {
text.set(condition.getValue().toString());
}
}
@Override
public void visit(@NotNull ArrangementCompositeMatchCondition condition) {
for (ArrangementMatchCondition c : condition.getOperands()) {
c.invite(this);
if (!text.isNull() && !isStart.isNull()) {
return;
}
}
}
});
if (isStart.isNull()) {
return null;
}
return new ArrangementSectionRuleData(processSectionText(StringUtil.notNullize(text.get())), isStart.get());
}
Aggregations