void (@NotNull JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { if (value instanceof MasterDetailsComponent.MyNode node) { final NamedConfigurable<?> namedConfigurable = node.getConfigurable(); if (namedConfigurable == null) { return; } final String displayName = node.getDisplayName(); final Icon icon = namedConfigurable.getIcon(expanded); setIcon(icon); setToolTipText(null); setFont(UIUtil.getTreeFont()); SimpleTextAttributes textAttributes = SimpleTextAttributes.REGULAR_ATTRIBUTES; if (node.isDisplayInBold()) { textAttributes = SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES; } else if (namedConfigurable instanceof ProjectStructureElementConfigurable) { final ProjectStructureElement projectStructureElement = ((ProjectStructureElementConfigurable<?>)namedConfigurable).getProjectStructureElement(); if (projectStructureElement != null) { final ProjectStructureDaemonAnalyzer daemonAnalyzer = myContext.getDaemonAnalyzer(); final ProjectStructureProblemsHolderImpl problemsHolder = daemonAnalyzer.getProblemsHolder(projectStructureElement); if (problemsHolder != null && problemsHolder.containsProblems()) { final boolean isUnused = problemsHolder.containsProblems(ProjectStructureProblemType.Severity.UNUSED); final boolean haveWarnings = problemsHolder.containsProblems(ProjectStructureProblemType.Severity.WARNING); final boolean haveErrors = problemsHolder.containsProblems(ProjectStructureProblemType.Severity.ERROR); Color foreground; foreground = isUnused ? NamedColorUtil.getInactiveTextColor() : null; final int style = haveWarnings || haveErrors ? SimpleTextAttributes.STYLE_WAVED : -1; final Color waveColor = haveErrors ? JBColor.RED : haveWarnings ? JBColor.GRAY : null; textAttributes = textAttributes.derive(style, foreground, null, waveColor); setToolTipText(problemsHolder.composeTooltipMessage()); } append(displayName, textAttributes); String description = projectStructureElement.getDescription(); if (description != null) { append(" (" + description + ")", SimpleTextAttributes.GRAY_ATTRIBUTES, false); } return; } } append(displayName, textAttributes); } }