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.Vector; 23 24 import javax.swing.JTable; 25 import javax.swing.ListSelectionModel; 26 import javax.swing.table.TableColumnModel; 27 import javax.swing.table.TableModel; 28 29 30 /** 31 * <code>QueueTable</code> uses <code>QueueTableModelInterceptor</code> update 32 * table in ferformance and thread safe way. User can use this table exactely 33 * the same way as <code>JTable</code>, all the event intercetion is done 34 * automagically inside this implementation. 35 * 36 * @author <a href="mailto:igor.kriznar@cosylab.com">Igor Kriznar</a> 37 * @version $Id: QueueTable.java,v 1.6 2008-04-22 12:28:40 jbobnar Exp $ 38 * 39 * @since May 3, 2004. 40 */ 41 public class QueueTable extends JTable 42 { 43 private static final long serialVersionUID = 1L; 44 private TableModel model; 45 private QueueTableModelInterceptor interceptor; 46 47 /** 48 * Constructs a new QueueTable object. 49 * @see JTable#JTable() 50 */ 51 public QueueTable() 52 { 53 super(); 54 } 55 56 /** 57 * Constructs a new QueueTable object with the given number of rows and columns. 58 * 59 * @param numRows number of rows 60 * @param numColumns number of columns 61 * @see JTable#JTable(int, int) 62 */ 63 public QueueTable(int numRows, int numColumns) 64 { 65 super(numRows, numColumns); 66 } 67 68 /** 69 * Constructs a new QueueTable with the given TableModel. 70 * 71 * @param dm table model 72 * @see JTable#JTable(TableModel) 73 */ 74 public QueueTable(TableModel dm) 75 { 76 super(dm); 77 } 78 79 /** 80 * Constructs a new QueueTable with initial values and column names. 81 * 82 * @param rowData initial data 83 * @param columnNames column names 84 * @see JTable#JTable(Object[][], Object[]) 85 */ 86 public QueueTable(Object[][] rowData, Object[] columnNames) 87 { 88 super(rowData, columnNames); 89 } 90 91 /** 92 * Constructs a new QueueTable with initial values and column names. 93 * 94 * @param rowData initial data 95 * @param columnNames column names 96 * @see JTable#JTable(Vector, Vector) 97 */ 98 public QueueTable(Vector rowData, Vector columnNames) 99 { 100 super(rowData, columnNames); 101 } 102 103 /** 104 * Constructs a new QueueTable using the given models. 105 * 106 * @param dm table model 107 * @param cm column model 108 * @see JTable#JTable(TableModel, TableColumnModel) 109 */ 110 public QueueTable(TableModel dm, TableColumnModel cm) 111 { 112 super(dm, cm); 113 } 114 115 /** 116 * Constructs a new QueueTable using the given models. 117 * 118 * @param dm table model 119 * @param cm column model 120 * @param sm selection model 121 * @see JTable#JTable(TableModel, TableColumnModel, ListSelectionModel) 122 */ 123 public QueueTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) 124 { 125 super(dm, cm, sm); 126 } 127 128 /* (non-Javadoc) 129 * @see javax.swing.JTable#setModel(javax.swing.table.TableModel) 130 */ 131 public void setModel(TableModel dataModel) 132 { 133 model = dataModel; 134 135 if (model == null) { 136 super.setModel(null); 137 } else { 138 //super.setModel(model); 139 QueueTableModelInterceptor i=new QueueTableModelInterceptor(model); 140 if (interceptor!=null) { 141 i.setRelaxationTime(interceptor.getRelaxationTime()); 142 interceptor.destroy(); 143 } 144 super.setModel(interceptor=i); 145 } 146 } 147 148 /* (non-Javadoc) 149 * @see javax.swing.JTable#getModel() 150 */ 151 public TableModel getModel() { 152 return model; 153 } 154 155 /** 156 * Returns minimum time betwean two table updates interceptor will wait. 157 * @return minimum time betwean two table updates 158 */ 159 public int getRelaxationTime() { 160 return interceptor.getRelaxationTime(); 161 } 162 163 /** 164 * Sets minimum time betwean two table updates interceptor will wait. 165 * @param relaxationTime 166 */ 167 public void setRelaxationTime(int relaxationTime) { 168 interceptor.setRelaxationTime(relaxationTime); 169 } 170 } 171 172 /* __oOo__ */