1 /*** 2 * Copyright (c) 2003 held jointly by the individual authors. 3 * 4 * This library is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU Lesser General Public License as published 6 * by the Free Software Foundation; either version 2.1 of the License, or 7 * (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; with out even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this library; if not, write to the Free Software Foundation, 16 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 17 * 18 * > http://www.gnu.org/copyleft/lesser.html 19 * > http://www.opensource.org/licenses/lgpl-license.php 20 */ 21 package net.mlw.vlh.swing.support; 22 23 import java.util.ArrayList; 24 import java.util.Arrays; 25 import java.util.List; 26 27 import org.apache.commons.beanutils.PropertyUtils; 28 29 /*** 30 * @author Matthew L. Wilson 31 * @version $Revision: 1.2 $ $Date: 2005/04/01 20:21:47 $ 32 */ 33 public class DyanBeanTableModel extends AbstractValueListTableModel 34 { 35 private String[] columns = {}; 36 37 private String[] properties = {}; 38 39 private Class[] classes = {}; 40 41 public void addColumn(String title, String property) 42 { 43 addColumn(title, property, Object.class); 44 } 45 46 public void addColumn(String title, String property, Class klass) 47 { 48 List columns = new ArrayList(Arrays.asList(this.columns)); 49 columns.add(title); 50 this.columns = (String[]) columns.toArray(new String[] {}); 51 52 List properties = new ArrayList(Arrays.asList(this.properties)); 53 properties.add(property); 54 this.properties = (String[]) properties.toArray(new String[] {}); 55 56 List classes = new ArrayList(Arrays.asList(this.classes)); 57 classes.add(klass); 58 this.classes = (Class[]) classes.toArray(new Class[] {}); 59 } 60 61 public String getSortPropertyName(int i) 62 { 63 return properties[i]; 64 } 65 66 /*** 67 * @see javax.swing.table.TableModel#getColumnName(int) 68 */ 69 public String getColumnName(int i) 70 { 71 return columns[i]; 72 } 73 74 /*** 75 * @see javax.swing.table.TableModel#getColumnCount() 76 */ 77 public int getColumnCount() 78 { 79 return columns.length; 80 } 81 82 /*** 83 * @see javax.swing.table.TableModel#getValueAt(int, int) 84 */ 85 public Object getValueAt(int row, int column) 86 { 87 try 88 { 89 Object bean = list.get(row); 90 if (bean == null) 91 { 92 return null; 93 } 94 return PropertyUtils.getProperty(bean, properties[column]); 95 } 96 catch (Exception e) 97 { 98 return e; 99 } 100 } 101 102 /*** 103 * @see javax.swing.table.TableModel#getColumnClass(int) 104 */ 105 public Class getColumnClass(int index) 106 { 107 return classes[index]; 108 } 109 110 }