//
// CacheEvent.java
//
/*
OME Bio-Formats package for reading and converting biological file formats.
Copyright (C) 2005-@year@ UW-Madison LOCI and Glencoe Software, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package loci.formats.cache;
import java.lang.reflect.Field;
/**
* A event indicating a cache update.
*
* <dl><dt><b>Source code:</b></dt>
* <dd><a href="http://trac.openmicroscopy.org.uk/ome/browser/bioformats.git/components/bio-formats/src/loci/formats/cache/CacheEvent.java">Trac</a>,
* <a href="http://git.openmicroscopy.org/?p=bioformats.git;a=blob;f=components/bio-formats/src/loci/formats/cache/CacheEvent.java;hb=HEAD">Gitweb</a></dd></dl>
*/
public class CacheEvent {
// -- Constants --
/** Event type indicating a new cache source. */
public static final int SOURCE_CHANGED = 1;
/** Event type indicating a new cache strategy. */
public static final int STRATEGY_CHANGED = 2;
/** Event type indicating an updated current dimensional position. */
public static final int POSITION_CHANGED = 3;
/** Event type indicating new axis priorities. */
public static final int PRIORITIES_CHANGED = 4;
/** Event type indicating new planar ordering. */
public static final int ORDER_CHANGED = 5;
/** Event type indicating new planar ordering. */
public static final int RANGE_CHANGED = 6;
/** Event type indicating an object has been added to the cache. */
public static final int OBJECT_LOADED = 7;
/** Event type indicating an object has been removed from the cache. */
public static final int OBJECT_DROPPED = 8;
// -- Fields --
/** Source of the cache update. */
protected Object source;
/** Type of cache event. */
protected int type;
/** Relevant index to the event, if any. */
protected int index;
// -- Constructor --
/** Constructs a cache event. */
public CacheEvent(Object source, int type) { this(source, type, -1); }
/** Constructs a cache event. */
public CacheEvent(Object source, int type, int index) {
this.source = source;
this.type = type;
this.index = index;
}
// -- CacheEvent API methods --
/** Gets the source of the cache update. */
public Object getSource() { return source; }
/** Gets the type of cache update. */
public int getType() { return type; }
/**
* Gets the index relevant to the cache update, if any.
* This parameter is only set for events POSITION_CHANGED,
* OBJECT_LOADED and OBJECT_DROPPED.
*/
public int getIndex() { return index; }
// -- Object API methods --
public String toString() {
// scan public fields to determine type name
String sType = "unknown";
Field[] fields = getClass().getFields();
for (int i=0; i<fields.length; i++) {
try {
if (fields[i].getInt(null) == type) sType = fields[i].getName();
}
catch (IllegalAccessException exc) { }
catch (IllegalArgumentException exc) { }
}
return super.toString() +
": source=[" + source + "] type=" + sType + " index=" + index;
}
}