001    package org.shiftone.jrat.provider.tree.ui.hierarchy;
002    
003    import org.jdesktop.swingx.JXTreeTable;
004    import org.shiftone.jrat.ui.util.PercentTableCellRenderer;
005    import org.shiftone.jrat.desktop.util.JXTableWatcher;
006    import org.shiftone.jrat.provider.tree.ui.summary.SummaryTableModel;
007    import org.shiftone.jrat.provider.tree.ui.summary.SummaryPanel;
008    
009    import javax.swing.*;
010    import java.awt.*;
011    import java.util.prefs.Preferences;
012    
013    /**
014     * @author (jeff@shiftone.org) Jeff Drost
015     */
016    public class HierarchyPanel extends JPanel {
017    
018        private JXTreeTable treeTable;
019    
020        public HierarchyPanel(HierarchyTreeTableModel model) {
021            treeTable = new JXTreeTable();
022            treeTable.setTreeTableModel(model);
023            treeTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
024            for (int i = 1; i < treeTable.getColumnCount(); i++) {
025                treeTable.getColumn(i).setMaxWidth(160);
026            }
027            PercentTableCellRenderer.setDefaultRenderer(treeTable);
028    
029            treeTable.setTreeCellRenderer(new HierarchyTreeCellRenderer());
030            treeTable.setColumnControlVisible(true);
031            treeTable.setShowGrid(true);
032    
033            JXTableWatcher.initialize(
034                    treeTable,
035                    Preferences.userNodeForPackage(HierarchyPanel.class).node("columns"),
036                    HierarchyTreeTableModel.getColumns());
037    
038            setLayout(new BorderLayout());
039            add(new JScrollPane(treeTable), BorderLayout.CENTER);
040    
041        }
042    }