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.Arrays;
23 import java.util.EventObject;
24
25 import javax.swing.event.TableModelEvent;
26
27
28 /**
29 * <code>TableRowModelEvent</code> contains information about changes in
30 * <code>TableRowModel</code>.
31 *
32 * @author <a href="mailto:igor.kriznar@cosylab.com">Igor Kriznar</a>
33 * @version $Id: TableRowModelEvent.java,v 1.6 2008-04-22 12:28:40 jbobnar Exp $
34 *
35 * @since May 3, 2004.
36 */
37 public class TableRowModelEvent extends EventObject
38 {
39 private static final long serialVersionUID = 1L;
40 /** Identifies structural change. */
41 public final static int HEADER_ROW = TableModelEvent.HEADER_ROW;
42 /** Identifies element index which applies for all row elements. */
43 public final static int ALL_VALUES = TableModelEvent.ALL_COLUMNS;
44
45 /** Identifies the addtion of new rows. */
46 public static final int INSERT = TableModelEvent.INSERT;
47
48 /** Identifies a change to existing data. */
49 public static final int UPDATE = TableModelEvent.UPDATE;
50
51 /** Identifies the removal of rows. */
52 public static final int DELETE = TableModelEvent.DELETE;
53 private int value = ALL_VALUES;
54 private int type = UPDATE;
55 private static final TableRow[] DEFAULT_ROWS = new TableRow[0];
56 private TableRow[] rows = DEFAULT_ROWS;
57 private int rowIndex = -1;
58
59 /**
60 * Creates new event with row as source, column value is by default
61 * <code>ALL_VALUES</code> and type is <code>UPDATE</code>.
62 *
63 * @param source
64 * @param index the index of row in parent model
65 */
66 public TableRowModelEvent(TableRow source, int index)
67 {
68 super(source);
69 rowIndex = index;
70 rows = new TableRow[]{ source };
71 }
72
73 /**
74 * Creates new event with row as source and value index, type is
75 * <code>UPDATE</code>..
76 *
77 * @param source table row as source
78 * @param index the index of row in parent model
79 * @param value the value index
80 *
81 * @throws IllegalArgumentException if value isless then -1
82 */
83 public TableRowModelEvent(TableRow source, int index, int value)
84 {
85 this(source, index);
86 this.value = value;
87
88 if (value < -1) {
89 throw new IllegalArgumentException(
90 "Argument value is less then -1 :'" + value + "'");
91 }
92 }
93
94 /**
95 * Creates new event.
96 *
97 * @param source table row as source
98 * @param index the index of row in parent model
99 * @param value the value index
100 * @param type the type of event
101 *
102 * @throws IllegalArgumentException if type is not one of
103 * <code>INSERT</code>, <code>DELETE</code> or <code>UPDATE</code>
104 * values
105 */
106 public TableRowModelEvent(TableRow source, int index, int value, int type)
107 {
108 this(source, index, value);
109 this.type = type;
110
111 if (type < -1 || type > 1) {
112 throw new IllegalArgumentException(
113 "Argument type has illegal value :'" + type + "'");
114 }
115 }
116
117 /**
118 * Creates new event.
119 *
120 * @param sources table row as source
121 * @param value the value index
122 * @param type the type of event
123 */
124 public TableRowModelEvent(TableRow[] sources, int value, int type)
125 {
126 this(sources[0], -1, value, type);
127
128 rows = sources;
129 }
130
131 /**
132 * Returns index of value for which event applies
133 *
134 * @return the value index
135 */
136 public int getValue()
137 {
138 return value;
139 }
140
141 /**
142 * Returns type of event, valid value is <code>INSERT</code>,
143 * <code>DELETE</code> and <code>UPDATE</code>.
144 *
145 * @return the type of event
146 */
147 public int getType()
148 {
149 return type;
150 }
151
152 /**
153 * Returns row, which was source of event. If there is more rows as source,
154 * first row is returned
155 *
156 * @return the event source
157 */
158 public TableRow getRow()
159 {
160 return rows[0];
161 }
162
163 /**
164 * Returns array of rows, which are source of this event.
165 *
166 * @return the sources of event
167 */
168 public TableRow[] getRows()
169 {
170 return rows;
171 }
172
173 /**
174 * Returns the index of rowinside parent model.
175 *
176 * @return the index of rowinside parent model
177 */
178 public int getRowIndex()
179 {
180 return rowIndex;
181 }
182
183 /* (non-Javadoc)
184 * @see java.util.EventObject#toString()
185 */
186 public String toString()
187 {
188 StringBuffer sb = new StringBuffer();
189 sb.append("TableRowModelEvent = { sources = ");
190 sb.append(Arrays.asList(getRows()));
191 sb.append(" rowIndex = ");
192 sb.append(rowIndex);
193 sb.append(" value = ");
194 sb.append(value);
195 sb.append("' type = ");
196 sb.append(type);
197 sb.append(" }");
198
199 return sb.toString();
200 }
201 }
202
203 /* __oOo__ */