01: /*
02: * GeoTools - OpenSource mapping toolkit
03: * http://geotools.org
04: * (C) 2005-2006, GeoTools Project Managment Committee (PMC)
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation;
09: * version 2.1 of the License.
10: *
11: * This library 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 GNU
14: * Lesser General Public License for more details.
15: */
16: package org.geotools.event;
17:
18: import org.geotools.event.GTDelta;
19: import org.geotools.event.GTEvent;
20: import java.util.EventObject;
21:
22: /**
23: * Captures changes to Style.
24: *
25: * <p>
26: * The "delta" acts as a series of bread crumbs allowing you the listener to
27: * figure out what changed where. The <b>Type</b> answers that other peskey
28: * question: when.
29: * </p>
30: *
31: * <p>
32: * You should be warned that deltas may also be "saved up" for a rainy day,
33: * this keeps user interfaces from being flooded with a cascade of events. The
34: * best example is a "macro" that makes a series of changes and only reports
35: * back a compound change resulting from the batch opperation.
36: * </p>
37: *
38: * @since 2.2.M3
39: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/main/src/main/java/org/geotools/event/GTEventImpl.java $
40: */
41: public class GTEventImpl extends EventObject implements GTEvent {
42: private static final long serialVersionUID = -5304196462694574579L;
43: private GTDelta delta;
44: private Type type;
45:
46: public GTEventImpl(GTRoot source) {
47: this (source, new GTDeltaImpl(new GTNoteImpl("",
48: GTDelta.NO_INDEX), GTDelta.Kind.CHANGED, source, null));
49: }
50:
51: public GTEventImpl(GTRoot source, GTDelta delta) {
52: this (source, Type.POST_CHANGE, delta);
53: }
54:
55: public GTEventImpl(GTRoot source, Type type, GTDelta delta) {
56: super (source);
57: this .type = type;
58: this .delta = delta;
59: }
60:
61: /**
62: * Returns a delta, rooted at style, describing the set of changes that
63: * happened. Returns <code>null</code> if not applicable to this type of
64: * event.
65: *
66: * @return the style delta, or <code>null</code> if not applicable
67: */
68: public GTDelta getDelta() {
69: return delta;
70: }
71:
72: /**
73: * Returns the type of event being reported.
74: *
75: * @return one of the event type constants
76: *
77: * @see #POST_CHANGE
78: * @see #PRE_DELETE
79: */
80: public Type getType() {
81: return type;
82: }
83:
84: public void setDelta(GTDelta delta) {
85: this .delta = delta;
86: }
87:
88: public void setType(Type type) {
89: this.type = type;
90: }
91: }
|