void (@NotNull JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Color foreground = UIUtil.getTreeForeground(selected, hasFocus); Color background = selected ? UIUtil.getTreeSelectionBackground(hasFocus) : null; boolean isRenderer = false; if (value instanceof ComponentNode componentNode) { isRenderer = componentNode.getUserObject() instanceof List<?>; Component component = componentNode.getComponent(); if (component != null && !selected) { if (!component.isVisible()) { foreground = JBColor.GRAY; } else if (component.getWidth() == 0 || component.getHeight() == 0) { foreground = new JBColor(new Color(128, 10, 0), JBColor.BLUE); } else if (component.getPreferredSize() != null && (component.getSize().width < component.getPreferredSize().width || component.getSize().height < component.getPreferredSize().height)) { foreground = PlatformColors.BLUE; } if (myInitialSelection == componentNode.getComponent()) { //noinspection UseJBColor background = new Color(31, 128, 8, 58); } } if (componentNode.isAccessibleNode) { AccessibleContext ac; if (component != null) { ac = component.getAccessibleContext(); } else { ac = componentNode.getAccessible().getAccessibleContext(); } String simpleName = ac.getClass().getSimpleName(); if (StringUtil.isEmpty(simpleName)) { append(ac.getClass().getName()); } else { append(simpleName); } String axName = ac.getAccessibleName(); if (axName != null) { append(" " + axName); } } else if (component != null) { append(UiInspectorUtil.getComponentName(component)); Pair<Class<?>, String> class2field = getClassAndFieldName(component); if (class2field != null) { append("(" + class2field.second + "@" + class2field.first.getSimpleName() + ")"); } append(": " + ValueCellRenderer.RectangleRenderer.toString(component.getBounds()), SimpleTextAttributes.GRAYED_ATTRIBUTES); if (component.isOpaque()) { append(", opaque", SimpleTextAttributes.GRAYED_ATTRIBUTES); } if (component.isDoubleBuffered()) { append(", double-buffered", SimpleTextAttributes.GRAYED_ATTRIBUTES); } if (DataManagerImpl.getDataProviderEx(component) != null) { append(", ", SimpleTextAttributes.GRAYED_ATTRIBUTES); append("data-provider", SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); } componentNode.setText(toString()); setIcon(Icons.findIconFor(component)); } else { append(componentNode.myName); } } if (isRenderer) { setIcon(AllIcons.Ide.Rating); } setForeground(foreground); setBackground(background); SpeedSearchUtil.applySpeedSearchHighlighting(tree, this, false, selected); }