in src/main/java/org/adoptopenjdk/jitwatch/ui/main/ClassTreePanel.java [134:189]
private DefaultMutableTreeNode findOrCreateTreeNode(final DefaultMutableTreeNode parent, final Object value)
{
int childCount = parent.getChildCount();
DefaultMutableTreeNode found = null;
int placeToInsert = 0;
boolean foundInsertPos = false;
for (int i = 0; i < childCount; i++)
{
DefaultMutableTreeNode child = (DefaultMutableTreeNode) parent.getChildAt(i);
int stringCompare = child.getUserObject().toString().compareTo(value.toString());
if (stringCompare == 0)
{
found = child;
break;
}
else if (!foundInsertPos && stringCompare < 0)
{
if (!(child.getUserObject() instanceof MetaPackage && value instanceof MetaClass))
{
placeToInsert++;
}
}
else
{
if (child.getUserObject() instanceof MetaPackage && value instanceof MetaClass)
{
placeToInsert++;
}
else
{
foundInsertPos = true;
}
}
}
if (found == null)
{
found = new DefaultMutableTreeNode(value);
parent.insert(found, placeToInsert);
if (value instanceof MetaPackage)
{
final String packageName = value.toString();
if (sameVmCommand && openPackageNodes.contains(packageName))
{
TreePath path = new TreePath(found.getPath());
treeTable.getTree().expandPath(path);
}
}
}
return found;
}