package de.hameister.treetable;
import java.awt.Dimension;
import javax.swing.JTable;
import javax.swing.plaf.basic.BasicTableUI;
public class MyTreeTable extends JTable {
private MyTreeTableCellRenderer tree;
private MyTreeTableModel treeTableModel;
private boolean showRoot;
public MyTreeTableCellRenderer getTree() {
return tree;
}
public MyTreeTableModel getTreeTableModel() {
return treeTableModel;
}
public void setTreeModel(MyTreeTableModel treeTableModel) {
// JTree erstellen.
this.treeTableModel = treeTableModel;
tree = new MyTreeTableCellRenderer(this, treeTableModel);
tree.setRootVisible(showRoot);
tree.setShowsRootHandles(true);
// Modell setzen.
super.setModel(new MyTreeTableModelAdapter(treeTableModel, tree));
// Gleichzeitiges Selektieren fuer Tree und Table.
MyTreeTableSelectionModel selectionModel = new MyTreeTableSelectionModel();
tree.setSelectionModel(selectionModel); //For the tree
setSelectionModel(selectionModel.getListSelectionModel()); //For the table
// Renderer fuer den Tree.
setDefaultRenderer(MyTreeTableModel.class, tree);
// Editor fuer die TreeTable
setDefaultEditor(MyTreeTableModel.class, new MyTreeTableCellEditor(tree, this));
// Kein Grid anzeigen.
setShowGrid(false);
// Keine Abstaende.
setIntercellSpacing(new Dimension(0, 0));
}
public MyTreeTable(MyTreeTableModel treeTableModel, boolean showRoot) {
super();
this.showRoot = showRoot;
setUI(new BasicTableUI());
setTreeModel(treeTableModel);
}
}