/*
* This file is part of the Echo Web Application Framework (hereinafter "Echo").
* Copyright (C) 2002-2009 NextApp, Inc.
*
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*/
package nextapp.echo2.app.event;
import java.util.EventObject;
import nextapp.echo2.app.table.TableModel;
/**
* An event describing a change to a <code>TableModel</code>.
*/
public class TableModelEvent extends EventObject {
/**
* A value for <code>column</code> parameters indicating that all columns
* of the table were affected by the change.
*/
public static final int ALL_COLUMNS = -2;
/**
* A value row-describing parameters/properties, (i.e., <code>row</code>,
* <code>firstRow</code>, and <code>lastRow</code>)
* indicating the table header was affected.
*/
public static final int HEADER_ROW = -1;
/**
* An event type indicating one or more table rows were deleted.
*/
public static final int DELETE = 1;
/**
* An event type indicating one or more table rows were inserted.
*/
public static final int INSERT = 2;
/**
* An event type indicating one or more table rows were updated.
*/
public static final int UPDATE = 3;
/**
* An event type indicating the table structure was modified.
*/
public static final int STRUCTURE_CHANGED = 4;
private int firstRow;
private int lastRow;
private int column;
private int type;
/**
* Creates a <code>TableModelEvent</code> describing a change to any or
* all rows of a table.
*
* @param source the changed <code>TableModel</code>
*/
public TableModelEvent(TableModel source) {
this(source, ALL_COLUMNS, 0, Integer.MAX_VALUE, UPDATE);
}
/**
* Creates a <code>TableModel</code>Event indicating a change to any or
* all columns of a single table row.
*
* @param source the changed <code>TableModel</code>
* @param row the index of the affected row
*/
public TableModelEvent(TableModel source, int row) {
this(source, ALL_COLUMNS, row, row, UPDATE);
}
/**
* Creates a <code>TableModel</code>Event indicating a change to any or
* all columns of an interval of table rows.
*
* @param source the changed <code>TableModel</code>
* @param firstRow the first table row affected by the update
* @param lastRow the last table row affected by the update
*/
public TableModelEvent(TableModel source, int firstRow, int lastRow) {
this(source, ALL_COLUMNS, firstRow, lastRow, UPDATE);
}
/**
* Creates a <code>TableModelEvent</code> indicating a change to a
* particular column of a single table row or an interval of table rows.
*
* @param source the changed <code>TableModel</code>
* @param column the column that was affected by the update
* @param firstRow the first table row affected by the update
* @param lastRow the last table row affected by the update
*/
public TableModelEvent(TableModel source, int column, int firstRow, int lastRow) {
this(source, column, firstRow, lastRow, UPDATE);
}
/**
* Primary constructor for creating <code>TableModelEvent</code>s.
* All other constructors are for convenience and must invoke this
* constructor.
*
* @param source the changed <code>TableModel</code>
* @param column the column that was affected by the update,
* or <code>ALL_COLUMNS</code> if all columns were affected.
* @param firstRow the first table row affected by the update
* @param lastRow the last table row affected by the update
* @param type The type of change that occurred, one of the following
* values:
* <ul>
* <li>STRUCTURE_CHANGED - indicates the table's structure
* changed.</li>
* <li>DELETE - indicates one or more rows were deleted.</li>
* <li>INSERT - indicates one or more rows were inserted.</li>
* <li>UPDATE - indicates one or more rows were updated.</li>
* </ul>
*/
public TableModelEvent(TableModel source, int column, int firstRow, int lastRow, int type) {
super(source);
this.firstRow = firstRow;
this.lastRow = lastRow;
this.column = column;
this.type = type;
}
/**
* Returns the column that was affected by the update.
*
* @return the column that was affected by the update.
*/
public int getColumn() {
return column;
}
/**
* Returns the first row that was affected by the update.
*
* @return the first row that was affected by the update
*/
public int getFirstRow() {
return firstRow;
}
/**
* Returns the last row that was affected by the update.
*
* @return the last row that was affected by the update
*/
public int getLastRow() {
return lastRow;
}
/**
* Returns the type of update that occurred.
*
* @return the type of update that occurred, one of the following values:
* <ul>
* <li>STRUCTURE_CHANGED - indicates the table's structure
* changed.</li>
* <li>DELETE - indicates one or more rows were deleted.</li>
* <li>INSERT - indicates one or more rows were inserted.</li>
* <li>UPDATE - indicates one or more rows were updated.</li>
* </ul>
*/
public int getType() {
return type;
}
}