/*
* TaxaTableModel.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 javax.swing.table.AbstractTableModel;
/**
* @author Filip Bielejec
* @version $Id$
*/
@SuppressWarnings("serial")
public class TaxaTableModel extends AbstractTableModel {
private PartitionDataList dataList;
private String[] COLUMN_NAMES = { "Name", "Height", "Data-set" };
private double[] heights = null;
private String[] trees = null;
public final static int NAME_INDEX = 0;
public final static int HEIGHT_INDEX = 1;
public final static int TAXA_SET_INDEX = 2;
public TaxaTableModel(PartitionDataList dataList) {
this.dataList = dataList;
}// END: Constructor
public int getColumnCount() {
return COLUMN_NAMES.length;
}
public int getRowCount() {
return this.dataList.allTaxa.getTaxonCount();
}
public Class<? extends Object> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return false;
}
public String getColumnName(int column) {
return COLUMN_NAMES[column];
}
public Object getValueAt(int row, int col) {
switch (col) {
case NAME_INDEX:
return this.dataList.allTaxa.getTaxonId(row);
case HEIGHT_INDEX:
if (heights != null) {
return heights[row];
} else {
return 0.0;
}
case TAXA_SET_INDEX:
if (trees != null) {
return trees[row];
} else {
return "";
}
default:
return null;
}// END: switch
}// END: getValueAt
private void getHeights() {
heights = new double[dataList.allTaxa.getTaxonCount()];
for (int i = 0; i < dataList.allTaxa.getTaxonCount(); i++) {
heights[i] = (Double) dataList.allTaxa.getTaxon(i).getAttribute(
Utils.ABSOLUTE_HEIGHT);
}// END: taxon loop
}// END: getHeights
private void getTrees() {
trees = new String[dataList.allTaxa.getTaxonCount()];
for (int i = 0; i < dataList.allTaxa.getTaxonCount(); i++) {
trees[i] = (String) dataList.allTaxa.getTaxon(i).getAttribute(
Utils.TREE_FILENAME);
}// END: taxon loop
}// END: getHeights
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(getColumnName(0));
for (int j = 1; j < getColumnCount(); j++) {
buffer.append("\t");
buffer.append(getColumnName(j));
}
buffer.append("\n");
for (int i = 0; i < getRowCount(); i++) {
buffer.append(getValueAt(i, 0));
for (int j = 1; j < getColumnCount(); j++) {
buffer.append("\t");
buffer.append(getValueAt(i, j));
}
buffer.append("\n");
}
return buffer.toString();
}// END: toString
public void fireTaxaChanged() {
getHeights();
getTrees();
fireTableDataChanged();
}// END: fireTaxaChanged
public void setDataList(PartitionDataList dataList) {
this.dataList = dataList;
}// END: setDataList
}// END: TaxaTableModel class