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 }