public ClassTreePanel()

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);
    }