in src/main/java/org/adoptopenjdk/jitwatch/ui/main/ClassTreePanel.java [49:132]
public ClassTreePanel(final JITWatchUI parent, final JITWatchConfig config)
{
this.parent = parent;
this.config = config;
setLayout(new BorderLayout());
rootItem = new DefaultMutableTreeNode("Root");
ColumnInfo<DefaultMutableTreeNode, Long> compilationTimeColumnInfo = new ColumnInfo<DefaultMutableTreeNode, Long>("Compilation Time (ms)")
{
@Override
public Long valueOf(DefaultMutableTreeNode node)
{
return calculateCompilationTime(node);
}
@Override
public Class<?> getColumnClass()
{
return Long.class;
}
};
ColumnInfo[] columns = new ColumnInfo[] { new TreeColumnInfo("Class Name"), compilationTimeColumnInfo };
treeTableModel = new ListTreeTableModel(rootItem, columns);
treeTable = new TreeTable(treeTableModel);
JTree tree = treeTable.getTree();
tree.setRootVisible(true);
tree.setShowsRootHandles(true);
tree.setCellRenderer(new CustomTreeCellRenderer());
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addTreeSelectionListener(new TreeSelectionListener()
{
@Override
public void valueChanged(TreeSelectionEvent e)
{
if (!selectedProgrammatically)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (node == null)
{
return;
}
Object value = node.getUserObject();
if (value instanceof MetaClass)
{
parent.metaClassSelectedFromClassTree((MetaClass) value);
}
}
}
});
tree.addTreeWillExpandListener(new TreeWillExpandListener()
{
@Override
public void treeWillExpand(TreeExpansionEvent event)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) event.getPath().getLastPathComponent();
Object value = node.getUserObject();
if (value instanceof MetaPackage)
{
openPackageNodes.add(value.toString());
}
}
@Override
public void treeWillCollapse(TreeExpansionEvent event)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) event.getPath().getLastPathComponent();
Object value = node.getUserObject();
if (value instanceof MetaPackage)
{
openPackageNodes.remove(value.toString());
}
}
});
JBScrollPane scrollPane = new JBScrollPane(treeTable);
add(scrollPane, BorderLayout.CENTER);
}