// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.ui.components.gpropertyeditor; import javax.swing.table.AbstractTableModel; import java.util.Vector; /** * it is the Table Model which is used to create a property editor. it has t columns and multiple rows, * each row is a property, first column is the name of property and second column is the value. * the names are stored as Object. * * @author Azin Azadi * Email : */ public class GPropertyTableModel extends AbstractTableModel { /** * */ private static final long serialVersionUID = -1101017043084681545L; /** * constructor */ public GPropertyTableModel() { } /** * the number of properties, stored */ public int getRowCount() { return values.size(); } public String getColumnName(int column) { return (column == 0 ? "Name" : "Value"); } /*return 2**/ public int getColumnCount() { return 2; } Vector values = new Vector(); Vector names = new Vector(); /** * clears all values ans names of the table */ public void clear() { values.clear(); names.clear(); fireTableStructureChanged(); } /** * adds a row to the table */ public void addData(Object name, Object value) { names.add(name); values.add(value); super.fireTableDataChanged(); } /** * sets the value of the given row(name). returns false if the given name does not exist in the properties */ public boolean setValue(Object name, Object value) { int ri = names.indexOf(name); //System.out.println(name+" "+ri); if (ri != -1) { setValueAt(value, ri, ri); super.fireTableDataChanged(); return true; } return false; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { //System.out.println(""+aValue); values.set(rowIndex, aValue); fireTableRowsUpdated(rowIndex, rowIndex); // super.fireTableDataChanged(); } /** * the second column cells(values) are editable, and the first are not */ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return columnIndex == 1; } @Override public Class<?> getColumnClass(int columnIndex) { //super.getColumnClass(columnIndex); if (columnIndex == 0) { return String.class; } else { return GCellEditor.class; } } public Object getValueAt(int rowIndex, int columnIndex) { if (columnIndex == 1) { return values.get(rowIndex); } else { return names.get(rowIndex); } } }