mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
usage view: deprecate UsageFilteringRuleEx in favor of additional method in UsageFilteringRule
This makes the additional 'isVisible' method more discoverable and simplifies code.
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiImportList;
|
||||
import com.intellij.psi.PsiJavaFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageTarget;
|
||||
import com.intellij.usages.rules.PsiElementUsage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -30,7 +31,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class ImportFilteringRule extends com.intellij.usages.rules.ImportFilteringRule {
|
||||
@Override
|
||||
public boolean isVisible(@NotNull Usage usage) {
|
||||
public boolean isVisible(@NotNull Usage usage, @NotNull UsageTarget[] targets) {
|
||||
final PsiElement psiElement = usage instanceof PsiElementUsage? ((PsiElementUsage)usage).getElement() : null;
|
||||
if (psiElement != null) {
|
||||
final PsiFile containingFile = psiElement.getContainingFile();
|
||||
|
||||
@@ -21,11 +21,11 @@ import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageGroup;
|
||||
import com.intellij.usages.UsageTarget;
|
||||
import com.intellij.usages.rules.UsageFilteringRule;
|
||||
import com.intellij.usages.rules.UsageFilteringRuleEx;
|
||||
import com.intellij.usages.rules.UsageGroupingRule;
|
||||
import com.intellij.util.Consumer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -59,15 +59,7 @@ class UsageNodeTreeBuilder {
|
||||
}
|
||||
|
||||
public boolean isVisible(@NotNull Usage usage) {
|
||||
for (final UsageFilteringRule rule : myFilteringRules) {
|
||||
boolean visible = rule instanceof UsageFilteringRuleEx ?
|
||||
((UsageFilteringRuleEx)rule).isVisible(usage, myTargets) :
|
||||
rule.isVisible(usage);
|
||||
if (!visible) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return Arrays.stream(myFilteringRules).allMatch(rule -> rule.isVisible(usage, myTargets));
|
||||
}
|
||||
|
||||
UsageNode appendUsage(@NotNull Usage usage, @NotNull Consumer<Node> edtInsertedUnderQueue, boolean filterDuplicateLines) {
|
||||
|
||||
@@ -17,6 +17,7 @@ package com.intellij.usages.impl.rules;
|
||||
|
||||
import com.intellij.usages.ReadWriteAccessUsage;
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageTarget;
|
||||
import com.intellij.usages.rules.UsageFilteringRule;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -26,7 +27,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class ReadAccessFilteringRule implements UsageFilteringRule{
|
||||
@Override
|
||||
public boolean isVisible(@NotNull Usage usage) {
|
||||
public boolean isVisible(@NotNull Usage usage, @NotNull UsageTarget[] targets) {
|
||||
if (usage instanceof ReadWriteAccessUsage) {
|
||||
final ReadWriteAccessUsage readWriteAccessUsage = (ReadWriteAccessUsage)usage;
|
||||
final boolean isForReadingOnly = readWriteAccessUsage.isAccessedForReading() && !readWriteAccessUsage.isAccessedForWriting();
|
||||
|
||||
@@ -17,6 +17,7 @@ package com.intellij.usages.impl.rules;
|
||||
|
||||
import com.intellij.usages.ReadWriteAccessUsage;
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageTarget;
|
||||
import com.intellij.usages.rules.UsageFilteringRule;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -26,7 +27,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class WriteAccessFilteringRule implements UsageFilteringRule{
|
||||
@Override
|
||||
public boolean isVisible(@NotNull Usage usage) {
|
||||
public boolean isVisible(@NotNull Usage usage, @NotNull UsageTarget[] targets) {
|
||||
if (usage instanceof ReadWriteAccessUsage) {
|
||||
final ReadWriteAccessUsage readWriteAccessUsage = (ReadWriteAccessUsage)usage;
|
||||
final boolean isForWritingOnly = readWriteAccessUsage.isAccessedForWriting() && !readWriteAccessUsage.isAccessedForReading();
|
||||
|
||||
@@ -16,10 +16,20 @@
|
||||
package com.intellij.usages.rules;
|
||||
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageTarget;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public interface UsageFilteringRule {
|
||||
UsageFilteringRule[] EMPTY_ARRAY = new UsageFilteringRule[0];
|
||||
|
||||
boolean isVisible(@NotNull Usage usage);
|
||||
default boolean isVisible(@NotNull Usage usage, @NotNull UsageTarget[] targets) {
|
||||
return isVisible(usage);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated implement {@link #isVisible(Usage, UsageTarget[])} instead
|
||||
*/
|
||||
default boolean isVisible(@NotNull Usage usage) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.intellij.usages.UsageTarget;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
* @deprecated implement {@link UsageFilteringRule#isVisible(Usage, UsageTarget[])} instead
|
||||
*/
|
||||
public interface UsageFilteringRuleEx extends UsageFilteringRule {
|
||||
boolean isVisible(@NotNull Usage usage, @NotNull UsageTarget[] targets);
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageTarget;
|
||||
import com.intellij.usages.rules.ImportFilteringRule;
|
||||
import com.intellij.usages.rules.PsiElementUsage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -30,7 +31,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatem
|
||||
*/
|
||||
public class GrImportFilteringRule extends ImportFilteringRule {
|
||||
@Override
|
||||
public boolean isVisible(@NotNull Usage usage) {
|
||||
public boolean isVisible(@NotNull Usage usage, @NotNull UsageTarget[] targets) {
|
||||
if (usage instanceof PsiElementUsage) {
|
||||
final PsiElement psiElement = ((PsiElementUsage)usage).getElement();
|
||||
final PsiFile containingFile = psiElement.getContainingFile();
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageTarget;
|
||||
import com.intellij.usages.rules.ImportFilteringRule;
|
||||
import com.intellij.usages.rules.PsiElementUsage;
|
||||
import com.jetbrains.python.psi.PyFile;
|
||||
@@ -30,7 +31,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class PyImportFilteringRule extends ImportFilteringRule {
|
||||
@Override
|
||||
public boolean isVisible(@NotNull Usage usage) {
|
||||
public boolean isVisible(@NotNull Usage usage, @NotNull UsageTarget[] targets) {
|
||||
if (usage instanceof PsiElementUsage) {
|
||||
final PsiElement psiElement = ((PsiElementUsage)usage).getElement();
|
||||
final PsiFile containingFile = psiElement.getContainingFile();
|
||||
|
||||
Reference in New Issue
Block a user