001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation;
009: * version 2.1 of the License.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: */
016: package org.geotools.feature;
017:
018: import java.util.EventObject;
019: import org.geotools.data.FeatureEvent;
020:
021: /**
022: * A simple event object to represent all events triggered by FeatureCollection
023: * instances (typically change events).
024: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/api/src/main/java/org/geotools/feature/CollectionEvent.java $
025: */
026: public class CollectionEvent extends EventObject {
027: private static final long serialVersionUID = -1864190177730929948L;
028:
029: /*
030: * Design Notes:
031: * - Must look at other classes for hints on how to implement nicely.
032: */
033:
034: /** event type constant denoting the adding of a feature */
035: public static final int FEATURES_ADDED = 0;
036:
037: /** event type constant denoting the removal of a feature */
038: public static final int FEATURES_REMOVED = 1;
039:
040: /**
041: * event type constant denoting that features in the collection has been
042: * modified
043: */
044: public static final int FEATURES_CHANGED = 2;
045:
046: /** Indicates one of FEATURES_ADDED, FEATURES_REMOVED, FEATURES_CHANGED */
047: private int type;
048:
049: /** Holds value of property features. */
050: private Feature[] features;
051:
052: public CollectionEvent(FeatureCollection collection,
053: FeatureEvent event) {
054: super (collection);
055:
056: switch (event.getEventType()) {
057: case FeatureEvent.FEATURES_ADDED:
058: this .type = CollectionEvent.FEATURES_ADDED;
059:
060: break;
061:
062: case FeatureEvent.FEATURES_CHANGED:
063: this .type = CollectionEvent.FEATURES_CHANGED;
064:
065: break;
066:
067: case FeatureEvent.FEATURES_REMOVED:
068: this .type = CollectionEvent.FEATURES_REMOVED;
069:
070: break;
071:
072: default:
073: this .type = CollectionEvent.FEATURES_REMOVED;
074: }
075:
076: this .features = null;
077: }
078:
079: /**
080: * Constructs a new CollectionEvent.
081: *
082: * @param source the collection which triggered the event
083: * @param involvedFeatures DOCUMENT ME!
084: * @param type DOCUMENT ME!
085: */
086: public CollectionEvent(FeatureCollection source,
087: Feature[] involvedFeatures, int type) {
088: super (source);
089: this .type = type;
090: this .features = involvedFeatures;
091: }
092:
093: /**
094: * provides access to the featurecollection which fired the event
095: *
096: * @return The FeatureCollection which was the event's source.
097: */
098: public FeatureCollection getCollection() {
099: return (FeatureCollection) source;
100: }
101:
102: /**
103: * Provides information on the type of change that has occured. Possible
104: * types are: add, remove, change
105: *
106: * @return an int which must be one of FEATURES_ADDED, FEATURES_REMOVED,
107: * FEATURES_CHANGED
108: */
109: public int getEventType() {
110: return type;
111: }
112:
113: /**
114: * Getter for property features.
115: *
116: * @return Value of property features.
117: */
118: public Feature[] getFeatures() {
119: return this.features;
120: }
121: }
|