package org.das2.components.treetable;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.table.TableCellRenderer;
import javax.swing.tree.TreeModel;

public class TreeTableCellRenderer extends JTree implements TableCellRenderer {
    
    private JTable table;
    
    private int visibleRow;
    
    public TreeTableCellRenderer(TreeModel model) {
        super(model);
    }
    
    public void setBounds(int x, int y, int w, int h) {
        super.setBounds(x, 0, w, table.getRowHeight()*table.getRowCount());
    }
    
    public void paint(Graphics g) {
        g.translate(0, -visibleRow * getHeight()/getRowCount());
        super.paint(g);
    }
    
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        this.table = table;
        this.visibleRow = row;
        if (table != null) {
            setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
        }
        return this;
    }
    
}