@Override protected void doOKAction() { apply((SeverityBasedTextAttributes) myOptionsList.getSelectedValue()); final Collection<SeverityBasedTextAttributes> infoTypes = new HashSet<SeverityBasedTextAttributes>( SeverityUtil.getRegisteredHighlightingInfoTypes(mySeverityRegistrar)); final ListModel listModel = myOptionsList.getModel(); final List<HighlightSeverity> order = new ArrayList<HighlightSeverity>(); for (int i = listModel.getSize() - 1; i >= 0; i--) { final SeverityBasedTextAttributes info = (SeverityBasedTextAttributes) listModel.getElementAt(i); order.add(info.getSeverity()); if (!mySeverityRegistrar.isDefaultSeverity(info.getSeverity())) { infoTypes.remove(info); final Color stripeColor = info.getAttributes().getErrorStripeColor(); mySeverityRegistrar.registerSeverity( info, stripeColor != null ? stripeColor : LightColors.YELLOW); } } for (SeverityBasedTextAttributes info : infoTypes) { mySeverityRegistrar.unregisterSeverity(info.getSeverity()); } mySeverityRegistrar.setOrder(order); super.doOKAction(); }
@Override protected void fillDaemonCodeAnalyzerErrorsStatus( DaemonCodeAnalyzerStatus status, boolean fillErrorsCount, SeverityRegistrar severityRegistrar) { for (int i = 0; i < status.errorCount.length; i++) { final HighlightSeverity minSeverity = severityRegistrar.getSeverityByIndex(i); if (minSeverity == null) { continue; } int sum = 0; for (DomElement element : myDomElements) { final DomElementsProblemsHolder holder = myAnnotationsManager.getCachedProblemHolder(element); sum += (SeverityRegistrar.getInstance(getProject()) .compare(minSeverity, HighlightSeverity.WARNING) >= 0 ? holder.getProblems(element, true, true) : holder.getProblems(element, true, minSeverity)) .size(); } status.errorCount[i] = sum; } }
private Color getColor(HighlightSeverity severity) { if (SeverityRegistrar.getInstance(myProject).compare(severity, HighlightSeverity.ERROR) >= 0) { return LightColors.RED; } if (SeverityRegistrar.getInstance(myProject).compare(severity, HighlightSeverity.WARNING) >= 0) { return LightColors.YELLOW; } return Color.white; }
private void reportOneTagProblem( final XmlTag tag, final String name, final String localizedMessage, final IntentionAction basicIntention, final HighlightDisplayKey key, final XmlEntitiesInspection inspection, final int type) { boolean htmlTag = false; if (tag instanceof HtmlTag) { htmlTag = true; if (isAdditionallyDeclared(inspection.getAdditionalEntries(type), name)) return; } final InspectionProfile profile = InspectionProjectProfileManager.getInstance(tag.getProject()).getInspectionProfile(); final IntentionAction intentionAction = inspection.getIntentionAction(name, type); if (htmlTag && profile.isToolEnabled(key, tag)) { addElementsForTagWithManyQuickFixes( tag, localizedMessage, isInjectedHtmlTagForWhichNoProblemsReporting((HtmlTag) tag) ? HighlightInfoType.INFORMATION : SeverityRegistrar.getInstance(tag.getProject()) .getHighlightInfoTypeBySeverity(profile.getErrorLevel(key, tag).getSeverity()), intentionAction, basicIntention); } else if (!htmlTag) { addElementsForTag(tag, localizedMessage, HighlightInfoType.ERROR, basicIntention); } }
protected static String getTextAttributeKey( @NotNull Project project, @NotNull HighlightSeverity severity, @NotNull ProblemHighlightType highlightType) { if (highlightType == ProblemHighlightType.LIKE_DEPRECATED) { return HighlightInfoType.DEPRECATED.getAttributesKey().getExternalName(); } if (highlightType == ProblemHighlightType.LIKE_UNKNOWN_SYMBOL && severity == HighlightSeverity.ERROR) { return HighlightInfoType.WRONG_REF.getAttributesKey().getExternalName(); } if (highlightType == ProblemHighlightType.LIKE_UNUSED_SYMBOL) { return HighlightInfoType.UNUSED_SYMBOL.getAttributesKey().getExternalName(); } SeverityRegistrar registrar = InspectionProjectProfileManagerImpl.getInstanceImpl(project).getSeverityRegistrar(); return registrar.getHighlightInfoTypeBySeverity(severity).getAttributesKey().getExternalName(); }
@Override public void loadState(Element state) { try { mySeverityRegistrar.readExternal(state); } catch (Throwable e) { LOG.error(e); } super.loadState(state); }
public FileLevelIntentionComponent( final String description, final HighlightSeverity severity, final List<Pair<HighlightInfo.IntentionActionDescriptor, TextRange>> intentions, final Project project, final PsiFile psiFile, final Editor editor) { myProject = project; final ShowIntentionsPass.IntentionsInfo info = new ShowIntentionsPass.IntentionsInfo(); if (intentions != null) { for (Pair<HighlightInfo.IntentionActionDescriptor, TextRange> intention : intentions) { final HighlightInfo.IntentionActionDescriptor descriptor = intention.getFirst(); info.intentionsToShow.add(descriptor); final String text = descriptor.getAction().getText(); createActionLabel( text, new Runnable() { public void run() { ShowIntentionActionsHandler.chooseActionAndInvoke( psiFile, editor, descriptor.getAction(), text); } }); } } myLabel.setText(description); myLabel.setIcon( SeverityRegistrar.getInstance(project).compare(severity, HighlightSeverity.ERROR) >= 0 ? ourQuickFixIcon : ourIntentionIcon); setBackground(getColor(severity)); myLabel.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { IntentionListStep step = new IntentionListStep(null, info, editor, psiFile, project); if (intentions != null && !intentions.isEmpty()) { HighlightInfo.IntentionActionDescriptor descriptor = intentions.get(0).getFirst(); IntentionActionWithTextCaching actionWithTextCaching = step.wrapAction(descriptor, psiFile, psiFile, editor); if (step.hasSubstep(actionWithTextCaching)) { step = step.getSubStep(actionWithTextCaching, null); } } JBPopupFactory.getInstance().createListPopup(step).showUnderneathOf(myLabel); } }); }
void readExternal( @NotNull Element toolElement, @NotNull InspectionProfile profile, Map<String, List<String>> dependencies) throws InvalidDataException { final String levelName = toolElement.getAttributeValue(LEVEL_ATTRIBUTE); final ProfileManager profileManager = profile.getProfileManager(); final SeverityRegistrar registrar = ((SeverityProvider) profileManager).getOwnSeverityRegistrar(); HighlightDisplayLevel level = levelName != null ? HighlightDisplayLevel.find(registrar.getSeverity(levelName)) : null; if (level == null) { level = HighlightDisplayLevel.WARNING; } myDefaultState.setLevel(level); final String enabled = toolElement.getAttributeValue(ENABLED_ATTRIBUTE); final boolean isEnabled = enabled != null && Boolean.parseBoolean(enabled); final String enabledTool = toolElement.getAttributeValue(ENABLED_BY_DEFAULT_ATTRIBUTE); myDefaultState.setEnabled(enabledTool != null ? Boolean.parseBoolean(enabledTool) : isEnabled); final InspectionToolWrapper toolWrapper = myDefaultState.getTool(); final List scopeElements = toolElement.getChildren(ProfileEx.SCOPE); final List<String> scopeNames = new ArrayList<String>(); for (Object sO : scopeElements) { final Element scopeElement = (Element) sO; final String scopeName = scopeElement.getAttributeValue(ProfileEx.NAME); if (scopeName == null) { continue; } final NamedScopesHolder scopesHolder = profileManager.getScopesManager(); NamedScope namedScope = null; if (scopesHolder != null) { namedScope = scopesHolder.getScope(scopeName); } final String errorLevel = scopeElement.getAttributeValue(LEVEL_ATTRIBUTE); final String enabledInScope = scopeElement.getAttributeValue(ENABLED_ATTRIBUTE); final InspectionToolWrapper copyToolWrapper = toolWrapper.createCopy(); // check if unknown children exists if (scopeElement.getAttributes().size() > 3 || !scopeElement.getChildren().isEmpty()) { copyToolWrapper.getTool().readSettings(scopeElement); } HighlightDisplayLevel scopeLevel = errorLevel != null ? HighlightDisplayLevel.find(registrar.getSeverity(errorLevel)) : null; if (scopeLevel == null) { scopeLevel = level; } if (namedScope != null) { addTool( namedScope, copyToolWrapper, enabledInScope != null && Boolean.parseBoolean(enabledInScope), scopeLevel); } else { addTool( scopeName, copyToolWrapper, enabledInScope != null && Boolean.parseBoolean(enabledInScope), scopeLevel); } scopeNames.add(scopeName); } for (int i = 0; i < scopeNames.size(); i++) { String scopeName = scopeNames.get(i); List<String> order = dependencies.get(scopeName); if (order == null) { order = new ArrayList<String>(); dependencies.put(scopeName, order); } for (int j = i + 1; j < scopeNames.size(); j++) { order.add(scopeNames.get(j)); } } // check if unknown children exists if (toolElement.getAttributes().size() > 4 || toolElement.getChildren().size() > scopeElements.size()) { toolWrapper.getTool().readSettings(toolElement); } myEnabled = isEnabled; }
@Override public Element getState() { Element state = super.getState(); mySeverityRegistrar.writeExternal(state); return state; }