/* * TaxaEditorTableModel.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; import dr.evolution.util.Taxa; import dr.evolution.util.Taxon; @SuppressWarnings("serial") public class TaxaEditorTableModel extends AbstractTableModel { private String[] COLUMN_NAMES = { "Name", "Height" }; public final static int NAME_INDEX = 0; public final static int HEIGHT_INDEX = 1; private Taxa taxaSet; public TaxaEditorTableModel() { taxaSet = new Taxa(); }// END: Constructor public void addEmptyRow() { String name = ""; Taxon taxon = new Taxon(name); taxon.setAttribute(Utils.ABSOLUTE_HEIGHT, (Double) 0.0); taxaSet.addTaxon(taxon); this.fireTableDataChanged(); }// END: addEmptyRow public void removeLastRow() { int lastIndex = taxaSet.getTaxonCount() - 1; Taxon taxon = taxaSet.getTaxon(lastIndex); taxaSet.removeTaxon(taxon); this.fireTableDataChanged(); }// END: removeLastRow public String getColumnName(int column) { return COLUMN_NAMES[column]; } @Override public int getColumnCount() { return COLUMN_NAMES.length; }// END: getColumnCount @Override public int getRowCount() { return taxaSet.getTaxonCount(); }// END: getRowCount public boolean isCellEditable(int row, int col) { return true; } public Class<? extends Object> getColumnClass(int c) { return getValueAt(0, c).getClass(); } @Override public Object getValueAt(int row, int col) { switch (col) { case NAME_INDEX: return taxaSet.getTaxonId(row); case HEIGHT_INDEX: return taxaSet.getTaxon(row).getAttribute(Utils.ABSOLUTE_HEIGHT); default: return null; }// END: switch }// END: getValueAt public void setValueAt(Object value, int row, int col) { switch (col) { case NAME_INDEX: taxaSet.setTaxonId(row, (String) value); break; case HEIGHT_INDEX: taxaSet.setTaxonAttribute(row, Utils.ABSOLUTE_HEIGHT, (Double) value); break; default: break; }// END: switch }// END: setValueAt public String toString(boolean header) { StringBuffer buffer = new StringBuffer(); if (header) { 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 fireTaxonListChanged() { this.fireTableDataChanged(); }// END: fireTaxaChanged public void setTaxaSet(Taxa taxaSet) { this.taxaSet = taxaSet; }// END: setTaxonList public Taxa getTaxaSet() { return taxaSet; }// END: getTaxonList }// END: TaxaEditorTableModel class