void (@NotNull JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { if (myView.isDisposed()) { return; } boolean showAsReadOnly = false; if (value instanceof Node && value != tree.getModel().getRoot()) { Node node = (Node)value; if (!node.isValid()) { append(UsageViewBundle.message("node.invalid") + " ", UsageTreeColors.INVALID_ATTRIBUTES); return; } if (myPresentation.isShowReadOnlyStatusAsRed() && node.isReadOnly()) { showAsReadOnly = true; } } if (value instanceof DefaultMutableTreeNode treeNode) { Object userObject = treeNode.getUserObject(); if (userObject instanceof UsageTarget usageTarget) { LOG.assertTrue(treeNode instanceof Node); if (!((Node)treeNode).isValid()) { if (!getCharSequence(false).toString().contains(UsageViewBundle.message("node.invalid"))) { append(UsageViewBundle.message("node.invalid"), UsageTreeColors.INVALID_ATTRIBUTES); } return; } final ItemPresentation presentation = usageTarget.getPresentation(); LOG.assertTrue(presentation != null); if (showAsReadOnly) { append(UsageViewBundle.message("node.readonly") + " ", UsageTreeColors.INVALID_ATTRIBUTES); } final String text = presentation.getPresentableText(); append(text == null ? "" : text, SimpleTextAttributes.REGULAR_ATTRIBUTES); final String locationString = presentation.getLocationString(); append(locationString == null ? "" : " " + locationString, SimpleTextAttributes.GRAY_ATTRIBUTES); setIcon(presentation.getIcon(expanded)); } else if (treeNode instanceof GroupNode) { GroupNode node = (GroupNode)treeNode; if (node.isRoot()) { append("<root>", patchAttrs(node, SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES)); //NON-NLS root is invisible } else { renderNode(node); } int count = node.getRecursiveUsageCount(); SimpleTextAttributes attributes = patchAttrs(node, UsageTreeColors.NUMBER_OF_USAGES_ATTRIBUTES); append(FontUtil.spaceAndThinSpace() + UsageViewBundle.message("usage.view.counter", count), SimpleTextAttributes.GRAYED_ATTRIBUTES.derive(attributes.getStyle(), null, null, null)); } else if (treeNode instanceof UsageNode) { UsageNode node = (UsageNode)treeNode; if (!node.isValid()) { append(UsageViewBundle.message("node.invalid"), UsageTreeColors.INVALID_ATTRIBUTES); return; } if (showAsReadOnly) { append(UsageViewBundle.message("node.readonly") + " ", patchAttrs(node, UsageTreeColors.READ_ONLY_ATTRIBUTES)); } renderNode(node); } else if (userObject instanceof String) { append((String)userObject, SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); } else { //noinspection HardCodedStringLiteral append(userObject == null ? "" : userObject.toString(), SimpleTextAttributes.REGULAR_ATTRIBUTES); } } else { //noinspection HardCodedStringLiteral append(value.toString(), SimpleTextAttributes.REGULAR_ATTRIBUTES); } SpeedSearchUtil.applySpeedSearchHighlighting(tree, this, true, mySelected); }