Here are the examples of the java api class com.intellij.psi.codeStyle.arrangement.match.ArrangementSectionRule taken from open source projects.
1. ArrangementSectionDetector#processComment()
Project: intellij-community
File: ArrangementSectionDetector.java
File: ArrangementSectionDetector.java
/** * Check if comment can be recognized as section start/end * @return true for section comment, false otherwise */ public boolean processComment(@NotNull PsiComment comment) { final TextRange range = comment.getTextRange(); final TextRange expandedRange = myDocument == null ? range : ArrangementUtil.expandToLineIfPossible(range, myDocument); final TextRange sectionTextRange = new TextRange(expandedRange.getStartOffset(), expandedRange.getEndOffset()); final String commentText = comment.getText().trim(); final ArrangementSectionRule openSectionRule = isSectionStartComment(mySettings, commentText); if (openSectionRule != null) { mySectionEntryProducer.consume(new ArrangementSectionEntryTemplate(comment, START_SECTION, sectionTextRange, commentText)); myOpenedSections.push(openSectionRule); return true; } if (!myOpenedSections.isEmpty()) { final ArrangementSectionRule lastSection = myOpenedSections.peek(); if (lastSection.getEndComment() != null && StringUtil.equals(commentText, lastSection.getEndComment())) { mySectionEntryProducer.consume(new ArrangementSectionEntryTemplate(comment, END_SECTION, sectionTextRange, commentText)); myOpenedSections.pop(); return true; } } return false; }
2. ArrangementEngine#arrange()
Project: intellij-community
File: ArrangementEngine.java
File: ArrangementEngine.java
/** * Arranges (re-orders) given entries according to the given rules. * * @param entries entries to arrange * @param sectionRules rules to use for arrangement * @param rulesByPriority rules sorted by priority ('public static' rule will have higher priority than 'public') * @param entryToSection mapping from arrangement entry to the parent section * @return arranged list of the given rules */ @SuppressWarnings("AssignmentToForLoopParameter") @NotNull public static <E extends ArrangementEntry> List<E> arrange(@NotNull Collection<E> entries, @NotNull List<ArrangementSectionRule> sectionRules, @NotNull List<? extends ArrangementMatchRule> rulesByPriority, @Nullable Map<E, ArrangementSectionRule> entryToSection) { List<E> arranged = ContainerUtilRt.newArrayList(); Set<E> unprocessed = ContainerUtilRt.newLinkedHashSet(); List<Pair<Set<ArrangementEntry>, E>> dependent = ContainerUtilRt.newArrayList(); for (E entry : entries) { List<? extends ArrangementEntry> dependencies = entry.getDependencies(); if (dependencies == null) { unprocessed.add(entry); } else { if (dependencies.size() == 1 && dependencies.get(0) == entry.getParent()) { // Handle a situation when the entry is configured to be at the first parent's children. arranged.add(entry); } else { Set<ArrangementEntry> first = new HashSet<ArrangementEntry>(dependencies); dependent.add(Pair.create(first, entry)); } } } Set<E> matched = new HashSet<E>(); MultiMap<ArrangementMatchRule, E> elementsByRule = new MultiMap<ArrangementMatchRule, E>(); for (ArrangementMatchRule rule : rulesByPriority) { matched.clear(); for (E entry : unprocessed) { if (entry.canBeMatched() && rule.getMatcher().isMatched(entry)) { elementsByRule.putValue(rule, entry); matched.add(entry); } } unprocessed.removeAll(matched); } for (ArrangementSectionRule sectionRule : sectionRules) { for (ArrangementMatchRule rule : sectionRule.getMatchRules()) { final Collection<E> arrangedEntries = arrangeByRule(arranged, elementsByRule, rule); if (entryToSection != null && arrangedEntries != null) { for (E entry : arrangedEntries) { entryToSection.put(entry, sectionRule); } } } } arranged.addAll(unprocessed); for (int i = 0; i < arranged.size() && !dependent.isEmpty(); i++) { E e = arranged.get(i); List<E> shouldBeAddedAfterCurrentElement = ContainerUtil.newArrayList(); for (Iterator<Pair<Set<ArrangementEntry>, E>> iterator = dependent.iterator(); iterator.hasNext(); ) { Pair<Set<ArrangementEntry>, E> pair = iterator.next(); pair.first.remove(e); if (pair.first.isEmpty()) { iterator.remove(); shouldBeAddedAfterCurrentElement.add(pair.second); } } // add dependent entries to the same section as main entry if (entryToSection != null && entryToSection.containsKey(e)) { final ArrangementSectionRule rule = entryToSection.get(e); for (E e1 : shouldBeAddedAfterCurrentElement) { entryToSection.put(e1, rule); } } arranged.addAll(i + 1, shouldBeAddedAfterCurrentElement); } return arranged; }
3. ArrangementSectionRulesControl#createRuleAliasEditDialog()
Project: intellij-community
File: ArrangementSectionRulesControl.java
File: ArrangementSectionRulesControl.java
@NotNull public ArrangementRuleAliasDialog createRuleAliasEditDialog() { final Set<String> tokenIds = new THashSet<String>(); 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); }
4. ArrangementSettingsPanel#copy()
Project: intellij-community
File: ArrangementSettingsPanel.java
File: ArrangementSettingsPanel.java
@NotNull private static List<ArrangementSectionRule> copy(@NotNull List<ArrangementSectionRule> rules) { List<ArrangementSectionRule> result = new ArrayList<ArrangementSectionRule>(); for (ArrangementSectionRule rule : rules) { result.add(rule.clone()); } return result; }
5. StdArrangementSettings#cloneSectionRules()
Project: intellij-community
File: StdArrangementSettings.java
File: StdArrangementSettings.java
@NotNull protected List<ArrangementSectionRule> cloneSectionRules() { final ArrayList<ArrangementSectionRule> rules = new ArrayList<ArrangementSectionRule>(); for (ArrangementSectionRule rule : mySectionRules) { rules.add(rule.clone()); } return rules; }
6. ArrangementSectionDetector#isSectionStartComment()
Project: intellij-community
File: ArrangementSectionDetector.java
File: ArrangementSectionDetector.java
@Nullable public static ArrangementSectionRule isSectionStartComment(@NotNull ArrangementSettings settings, @NotNull String comment) { for (ArrangementSectionRule rule : settings.getSections()) { if (rule.getStartComment() != null && StringUtil.equals(comment, rule.getStartComment())) { return rule; } } return null; }
7. ArrangementEngine#arrange()
Project: consulo
File: ArrangementEngine.java
File: ArrangementEngine.java
/** * Arranges (re-orders) given entries according to the given rules. * * @param entries entries to arrange * @param sectionRules rules to use for arrangement * @param rulesByPriority rules sorted by priority ('public static' rule will have higher priority than 'public') * @param entryToSection mapping from arrangement entry to the parent section * @return arranged list of the given rules */ @SuppressWarnings("AssignmentToForLoopParameter") @NotNull public static <E extends ArrangementEntry> List<E> arrange(@NotNull Collection<E> entries, @NotNull List<ArrangementSectionRule> sectionRules, @NotNull List<? extends ArrangementMatchRule> rulesByPriority, @Nullable Map<E, ArrangementSectionRule> entryToSection) { List<E> arranged = ContainerUtilRt.newArrayList(); Set<E> unprocessed = ContainerUtilRt.newLinkedHashSet(); List<Pair<Set<ArrangementEntry>, E>> dependent = ContainerUtilRt.newArrayList(); for (E entry : entries) { List<? extends ArrangementEntry> dependencies = entry.getDependencies(); if (dependencies == null) { unprocessed.add(entry); } else { if (dependencies.size() == 1 && dependencies.get(0) == entry.getParent()) { // Handle a situation when the entry is configured to be at the first parent's children. arranged.add(entry); } else { Set<ArrangementEntry> first = new HashSet<ArrangementEntry>(dependencies); dependent.add(Pair.create(first, entry)); } } } Set<E> matched = new HashSet<E>(); MultiMap<ArrangementMatchRule, E> elementsByRule = new MultiMap<ArrangementMatchRule, E>(); for (ArrangementMatchRule rule : rulesByPriority) { matched.clear(); for (E entry : unprocessed) { if (entry.canBeMatched() && rule.getMatcher().isMatched(entry)) { elementsByRule.putValue(rule, entry); matched.add(entry); } } unprocessed.removeAll(matched); } for (ArrangementSectionRule sectionRule : sectionRules) { for (ArrangementMatchRule rule : sectionRule.getMatchRules()) { final Collection<E> arrangedEntries = arrangeByRule(arranged, elementsByRule, rule); if (entryToSection != null && arrangedEntries != null) { for (E entry : arrangedEntries) { entryToSection.put(entry, sectionRule); } } } } arranged.addAll(unprocessed); for (int i = 0; i < arranged.size() && !dependent.isEmpty(); i++) { E e = arranged.get(i); List<E> shouldBeAddedAfterCurrentElement = ContainerUtil.newArrayList(); for (Iterator<Pair<Set<ArrangementEntry>, E>> iterator = dependent.iterator(); iterator.hasNext(); ) { Pair<Set<ArrangementEntry>, E> pair = iterator.next(); pair.first.remove(e); if (pair.first.isEmpty()) { iterator.remove(); shouldBeAddedAfterCurrentElement.add(pair.second); } } // add dependent entries to the same section as main entry if (entryToSection != null && entryToSection.containsKey(e)) { final ArrangementSectionRule rule = entryToSection.get(e); for (E e1 : shouldBeAddedAfterCurrentElement) { entryToSection.put(e1, rule); } } arranged.addAll(i + 1, shouldBeAddedAfterCurrentElement); } return arranged; }
8. ArrangementSectionRulesControl#createRuleAliasEditDialog()
Project: consulo
File: ArrangementSectionRulesControl.java
File: ArrangementSectionRulesControl.java
@NotNull public ArrangementRuleAliasDialog createRuleAliasEditDialog() { final Set<String> tokenIds = new THashSet<String>(); 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); }
9. ArrangementSettingsPanel#copy()
Project: consulo
File: ArrangementSettingsPanel.java
File: ArrangementSettingsPanel.java
@NotNull private static List<ArrangementSectionRule> copy(@NotNull List<ArrangementSectionRule> rules) { List<ArrangementSectionRule> result = new ArrayList<ArrangementSectionRule>(); for (ArrangementSectionRule rule : rules) { result.add(rule.clone()); } return result; }
10. StdArrangementSettings#cloneSectionRules()
Project: consulo
File: StdArrangementSettings.java
File: StdArrangementSettings.java
@NotNull protected List<ArrangementSectionRule> cloneSectionRules() { final ArrayList<ArrangementSectionRule> rules = new ArrayList<ArrangementSectionRule>(); for (ArrangementSectionRule rule : mySectionRules) { rules.add(rule.clone()); } return rules; }