1 /* 2 * Copyright (c) 2003-2008 by Cosylab d. d. 3 * 4 * This file is part of CosyBeans-Common. 5 * 6 * CosyBeans-Common is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * CosyBeans-Common is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with CosyBeans-Common. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package com.cosylab.gui.components.table; 21 22 import java.util.ArrayList; 23 import java.util.Arrays; 24 import java.util.List; 25 26 27 /** 28 * <code>TableRowArray</code> is support implementation of 29 * <code>TableRow</code> build around <code>ArrayList</code>. 30 * 31 * @author <a href="mailto:igor.kriznar@cosylab.com">Igor Kriznar</a> 32 * @version $Id: TableRowArray.java,v 1.7 2008-04-22 12:28:40 jbobnar Exp $ 33 * 34 * @since May 5, 2004. 35 */ 36 public class TableRowArray implements TableRow 37 { 38 protected List<Object> values; 39 protected TableRowModel parentModel; 40 41 /** 42 * Creates new instance. 43 */ 44 public TableRowArray() 45 { 46 super(); 47 values = new ArrayList<Object>(); 48 } 49 50 /** 51 * Creates new instance. 52 * 53 * @param l values as array 54 */ 55 public TableRowArray(Object[] l) 56 { 57 super(); 58 values = Arrays.asList(l); 59 } 60 61 /** 62 * Creates new instance. 63 * 64 * @param l values as List 65 */ 66 public TableRowArray(List<Object> l) 67 { 68 super(); 69 values = l; 70 } 71 72 /* (non-Javadoc) 73 * @see com.cosylab.gui.components.table.TableRow#getValueAt(int) 74 */ 75 public Object getValueAt(int column) 76 { 77 return values.get(column); 78 } 79 80 /* (non-Javadoc) 81 * @see com.cosylab.gui.components.table.TableRow#getValueCount() 82 */ 83 public int getValueCount() 84 { 85 return values.size(); 86 } 87 88 /* (non-Javadoc) 89 * @see com.cosylab.gui.components.table.TableRow#setParentModel(com.cosylab.gui.components.table.TableRowModel) 90 */ 91 public void setParentModel(TableRowModel model) 92 { 93 parentModel = model; 94 } 95 96 /* (non-Javadoc) 97 * @see com.cosylab.gui.components.table.TableRow#getParentModel() 98 */ 99 public TableRowModel getParentModel() 100 { 101 return parentModel; 102 } 103 104 /** 105 * Adds new value to the end of this row. 106 * 107 * @param value the value added to the end of this row 108 */ 109 public void addValue(Object value) 110 { 111 values.add(value); 112 } 113 114 /** 115 * Inserts new value to this row at specified position. 116 * 117 * @param index where to insert value 118 * @param value new inserted value 119 */ 120 public void addValue(int index, Object value) 121 { 122 values.add(index, value); 123 } 124 125 /** 126 * Replaces value at specified index. 127 * 128 * @param index where value is set 129 * @param newValue new value 130 * 131 * @return old value at index 132 */ 133 public Object setValue(int index, Object newValue) 134 { 135 return values.set(index, newValue); 136 } 137 138 /* 139 * Fires update event for entire row. 140 */ 141 protected void fireUpdate() 142 { 143 fireUpdate(TableRowModelEvent.ALL_VALUES); 144 } 145 146 /* 147 * Fires update event for value in row. 148 */ 149 protected void fireUpdate(int index) 150 { 151 if (parentModel != null) { 152 parentModel.fireRowUpdate(this, index); 153 } 154 } 155 156 /* (non-Javadoc) 157 * @see com.cosylab.gui.components.table.TableRow#isEditable(int) 158 */ 159 public boolean isValueSettable(int index) 160 { 161 return false; 162 } 163 164 /* (non-Javadoc) 165 * @see com.cosylab.gui.components.table.TableRow#compateTo(com.cosylab.gui.components.table.TableRow, int) 166 */ 167 public int compareTo(TableRow row, int valueIndex) 168 { 169 Object o1 = getValueAt(valueIndex); 170 Object o2 = row.getValueAt(valueIndex); 171 172 if (o1 instanceof Comparable) { 173 return ((Comparable)o1).compareTo(o2); 174 } 175 176 return 0; 177 } 178 } 179 180 /* __oOo__ */