public void disableTool(@NotNull PsiElement element) { final Project project = element.getProject(); final DependencyValidationManager validationManager = DependencyValidationManager.getInstance(project); if (myTools != null) { for (ScopeToolState state : myTools) { final NamedScope scope = state.getScope(project); if (scope != null) { final PackageSet packageSet = scope.getValue(); if (packageSet != null) { final PsiFile file = element.getContainingFile(); if (file != null) { if (packageSet.contains(file, validationManager)) { state.setEnabled(false); return; } } else { if (packageSet instanceof PackageSetBase && ((PackageSetBase) packageSet) .contains(PsiUtilCore.getVirtualFile(element), project, validationManager)) { state.setEnabled(false); return; } } } } } myDefaultState.setEnabled(false); } else { myDefaultState.setEnabled(false); setEnabled(false); } }
@Nullable @Override public InspectionToolWrapper getEnabledTool( @Nullable PsiElement element, boolean includeDoNotShow) { if (!myEnabled) return null; if (myTools != null && element != null) { final Project project = element.getProject(); final DependencyValidationManager manager = DependencyValidationManager.getInstance(project); for (ScopeToolState state : myTools) { final NamedScope scope = state.getScope(project); if (scope != null) { final PackageSet set = scope.getValue(); if (set != null && set.contains(element.getContainingFile(), manager)) { return state.isEnabled() && (includeDoNotShow || !HighlightDisplayLevel.DO_NOT_SHOW.equals(state.getLevel())) ? state.getTool() : null; } } } } return myDefaultState.isEnabled() && (includeDoNotShow || !HighlightDisplayLevel.DO_NOT_SHOW.equals(myDefaultState.getLevel())) ? myDefaultState.getTool() : null; }
@NotNull @Override public InspectionToolWrapper getInspectionTool(PsiElement element) { if (myTools != null) { final PsiFile containingFile = element == null ? null : element.getContainingFile(); final Project project = containingFile == null ? null : containingFile.getProject(); for (ScopeToolState state : myTools) { if (element == null) { return state.getTool(); } NamedScope scope = state.getScope(project); if (scope != null) { final PackageSet packageSet = scope.getValue(); if (packageSet != null) { if (containingFile != null && packageSet.contains( containingFile, DependencyValidationManager.getInstance(project))) { return state.getTool(); } } } } } return myDefaultState.getTool(); }
public HighlightDisplayLevel getLevel(PsiElement element) { if (myTools == null || element == null) return myDefaultState.getLevel(); final Project project = element.getProject(); final DependencyValidationManager manager = DependencyValidationManager.getInstance(project); for (ScopeToolState state : myTools) { final NamedScope scope = state.getScope(project); final PackageSet set = scope != null ? scope.getValue() : null; if (set != null && set.contains(element.getContainingFile(), manager)) { return state.getLevel(); } } return myDefaultState.getLevel(); }
@Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { if (holder == null) return false; final NamedScope scope = holder.getScope(myName); if (scope != null) { final PackageSet packageSet = scope.getValue(); if (packageSet != null) { return packageSet instanceof PackageSetBase ? ((PackageSetBase) packageSet).contains(file, holder) : packageSet.contains(getPsiFile(file, holder.getProject()), holder); } } return false; }
@Override public boolean contains( VirtualFile file, @NotNull Project project, @Nullable NamedScopesHolder holder) { if (myFirstSet instanceof PackageSetBase ? ((PackageSetBase) myFirstSet).contains(file, project, holder) : myFirstSet.contains(getPsiFile(file, project), holder)) { if (mySecondSet instanceof PackageSetBase ? ((PackageSetBase) mySecondSet).contains(file, project, holder) : mySecondSet.contains(getPsiFile(file, project), holder)) { return true; } } return false; }
private void includeSelected(boolean recurse) { final ArrayList<PackageSet> selected = getSelectedSets(recurse); if (selected == null || selected.isEmpty()) return; for (PackageSet set : selected) { if (myCurrentScope == null) { myCurrentScope = set; } else if (myCurrentScope instanceof InvalidPackageSet) { myCurrentScope = StringUtil.isEmpty(myCurrentScope.getText()) ? set : new UnionPackageSet(myCurrentScope, set); } else { final boolean[] append = {true}; final PackageSet simplifiedScope = processComplementaryScope(myCurrentScope, set, true, append); if (!append[0]) { myCurrentScope = simplifiedScope; } else { myCurrentScope = simplifiedScope != null ? new UnionPackageSet(simplifiedScope, set) : set; } } } rebuild(true); }
@Override @NotNull public String getText() { StringBuffer buf = new StringBuffer(); boolean needParen = myFirstSet.getNodePriority() > getNodePriority(); if (needParen) buf.append('('); buf.append(myFirstSet.getText()); if (needParen) buf.append(')'); buf.append("&&"); needParen = mySecondSet.getNodePriority() > getNodePriority(); if (needParen) buf.append('('); buf.append(mySecondSet.getText()); if (needParen) buf.append(')'); return buf.toString(); }
@Override public boolean isEnabled(PsiElement element) { if (!myEnabled) return false; if (myTools == null || element == null) return myDefaultState.isEnabled(); final Project project = element.getProject(); final DependencyValidationManager manager = DependencyValidationManager.getInstance(project); for (ScopeToolState state : myTools) { final NamedScope scope = state.getScope(project); if (scope != null) { final PackageSet set = scope.getValue(); if (set != null && set.contains(element.getContainingFile(), manager)) { return state.isEnabled(); } } } return myDefaultState.isEnabled(); }
@Nullable static PackageSet processComplementaryScope( @NotNull PackageSet current, PackageSet added, boolean checkComplementSet, boolean[] append) { final String text = added.getText(); if (current instanceof ComplementPackageSet && Comparing.strEqual( ((ComplementPackageSet) current).getComplementarySet().getText(), text)) { if (checkComplementSet) { append[0] = false; } return null; } if (Comparing.strEqual(current.getText(), text)) { if (!checkComplementSet) { append[0] = false; } return null; } if (current instanceof UnionPackageSet) { final PackageSet left = processComplementaryScope( ((UnionPackageSet) current).getFirstSet(), added, checkComplementSet, append); final PackageSet right = processComplementaryScope( ((UnionPackageSet) current).getSecondSet(), added, checkComplementSet, append); if (left == null) return right; if (right == null) return left; return new UnionPackageSet(left, right); } if (current instanceof IntersectionPackageSet) { final PackageSet left = processComplementaryScope( ((IntersectionPackageSet) current).getFirstSet(), added, checkComplementSet, append); final PackageSet right = processComplementaryScope( ((IntersectionPackageSet) current).getSecondSet(), added, checkComplementSet, append); if (left == null) return right; if (right == null) return left; return new IntersectionPackageSet(left, right); } return current; }
public void reset(PackageSet packageSet, @Nullable Runnable runnable) { myCurrentScope = packageSet; myPatternField.setText(myCurrentScope == null ? "" : myCurrentScope.getText()); rebuild(false, runnable, false, 0); }
@Override @NotNull public PackageSet createCopy() { return new IntersectionPackageSet(myFirstSet.createCopy(), mySecondSet.createCopy()); }