/*
* TaxaPanel.java
*
* Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard
*
* This file is part of BEAST.
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership and licensing.
*
* BEAST is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* BEAST is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with BEAST; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
package dr.app.bss;
import jam.framework.Exportable;
import jam.table.HeaderRenderer;
import jam.table.TableRenderer;
import java.awt.BorderLayout;
import java.awt.Insets;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.plaf.BorderUIResource;
import javax.swing.table.TableColumn;
import dr.app.gui.table.TableEditorStopper;
/**
* @author Filip Bielejec
* @version $Id$
*/
@SuppressWarnings("serial")
public class TaxaPanel extends JPanel implements Exportable {
private PartitionDataList dataList = null;
private JScrollPane scrollPane = new JScrollPane();
private JTable taxaTable = null;
private TaxaTableModel taxaTableModel = null;
private TableColumn column;
public TaxaPanel(PartitionDataList dataList) {
this.dataList = dataList;
taxaTable = new JTable();
taxaTableModel = new TaxaTableModel(this.dataList);
taxaTable.setModel(taxaTableModel);
setLayout(new BorderLayout());
taxaTable.getTableHeader().setReorderingAllowed(false);
taxaTable.getTableHeader()
.setDefaultRenderer(
new HeaderRenderer(SwingConstants.LEFT, new Insets(0,
2, 0, 2)));
column = taxaTable.getColumnModel()
.getColumn(TaxaTableModel.NAME_INDEX);
column.setCellRenderer(new TableRenderer(SwingConstants.LEFT,
new Insets(0, 2, 0, 2)));
column.setPreferredWidth(80);
column = taxaTable.getColumnModel().getColumn(
TaxaTableModel.HEIGHT_INDEX);
column.setCellRenderer(new TableRenderer(SwingConstants.LEFT,
new Insets(0, 2, 0, 2)));
column.setPreferredWidth(80);
column = taxaTable.getColumnModel().getColumn(
TaxaTableModel.TAXA_SET_INDEX);
column.setCellRenderer(new TableRenderer(SwingConstants.LEFT,
new Insets(0, 2, 0, 2)));
column.setPreferredWidth(80);
TableEditorStopper.ensureEditingStopWhenTableLosesFocus(taxaTable);
scrollPane = new JScrollPane(taxaTable,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
RowNumberTable rowNumberTable = new RowNumberTable(taxaTable);
scrollPane.setRowHeaderView(rowNumberTable);
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,
rowNumberTable.getTableHeader());
scrollPane.getViewport().setOpaque(false);
setOpaque(false);
setBorder(new BorderUIResource.EmptyBorderUIResource(
new java.awt.Insets(12, 12, 12, 12)));
setLayout(new BorderLayout(0, 0));
add(scrollPane, BorderLayout.CENTER);
}// END: Constructor
public JComponent getExportableComponent() {
return taxaTable;
}
public void updateTaxaTable(PartitionDataList dataList) {
taxaTableModel.setDataList(dataList);
setDataList(dataList);
fireTaxaChanged();
}// END: updateTaxaTable
public void fireTaxaChanged() {
taxaTableModel.fireTaxaChanged();
}// END: fireTableDataChanged
public void setDataList(PartitionDataList dataList) {
this.dataList = dataList;
}// END: setDataList
}// END: class