package org.jlab.groot.ui;

import java.awt.BorderLayout;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import org.jlab.groot.tree.Tree;
import org.jlab.groot.tree.TreeTextFile;

public class TreeEditor extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	Tree tree;
	JTable table;
	int maxNColumns = 15;
	int maxNRows = 1000;

	public TreeEditor(Tree tree) {
		this.tree = tree;
		init();
	}

	public void setMaxColumns(int cols) {
		this.maxNColumns = cols;
		init();
	}

	public void setMaxRows(int rows) {
		this.maxNRows = rows;
		init();
	}

	private void init() {
		table = new JTable();
		table.setFillsViewportHeight(true);
		
		DefaultTableModel dataModel = new DefaultTableModel() {
			/**
			 * 
			 */
			private static final long serialVersionUID = 1L;
			List branches = tree.getListOfBranches();

			public int getColumnCount() {
				if (tree.getListOfBranches().size() < maxNColumns) {
					return tree.getListOfBranches().size();
				} else {
					return maxNColumns;
				}
			}

			public int getRowCount() {
				if (tree.getEntries() < maxNRows) {
					return tree.getEntries();
				} else {
					return maxNRows;
				}
			}

			public Object getValueAt(int row, int col) {
				tree.readEntry(row);
				return tree.getBranch(branches.get(col)).getValue().toString();
			}

			@Override
			public String getColumnName(int index) {
				return branches.get(index);
			}
		};

		table.setModel(dataModel);
		JScrollPane scrollPane = new JScrollPane(table);
		JPanel tablePanel = new JPanel();
		tablePanel.setLayout(new BorderLayout());
		tablePanel.add(scrollPane, BorderLayout.CENTER);
		this.setLayout(new BorderLayout());
		this.add(tablePanel, BorderLayout.CENTER);
	}

	public static void main(String[] args) {
		TreeTextFile tree = new TreeTextFile("T");
		//tree.readFile("/Users/gavalian/Desktop/pp_10k.txt");
        tree.readFile("/Users/wphelps/Desktop/GROOTTree/pp_10k.txt");
        System.out.println( " entries = " + tree.getEntries());
        for(int i = 0; i < 10; i++){
            tree.readEntry(i);
            tree.print();
        }
    
        JFrame frame = new JFrame("Test");
        TreeEditor editor = new TreeEditor(tree);
        frame.add(editor);
        frame.pack();
        frame.setVisible(true);
	}

}

 

Ads help maintain this website.