001: /* uDig - User Friendly Desktop Internet GIS client
002: * http://udig.refractions.net
003: * (C) 2004, Refractions Research Inc.
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation;
008: * version 2.1 of the License.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: */
015: package net.refractions.udig.project;
016:
017: import net.refractions.udig.project.MapEvent.MapEventType;
018:
019: /**
020: * Event encapsulating information about the changes of the composition of a map.
021: *
022: * @author Jesse
023: * @since 1.1.0
024: */
025: public class MapCompositionEvent extends UDIGEvent {
026: public static enum EventType {
027: /**
028: * Indicates that a layer was removed. The oldValue will be the layer that was removed and the
029: * newValue will be null.
030: */
031: REMOVED,
032: /**
033: * Indicates that more than one layer was removed. The oldValue will be the layers removed,
034: * newValue will be an array of indices of the layers removed and layer will be null.
035: */
036: MANY_REMOVED,
037: /**
038: * Indicates that a layer was added. The oldValue will be null and newValue will be the new layer.
039: * Layer will be null.
040: */
041: ADDED,
042: /**
043: * Indicates that more than one layer was added. The oldValue will be null, newValue will be
044: * a list of new layers and layer will be null.
045: */
046: MANY_ADDED,
047: /**
048: * Indicates that a layer was moved in the list of layers. OldValue will be the old position,
049: * newValue will be the new position and layer will be the layer moved.
050: * Layer will be null.
051: */
052: REORDERED
053: }
054:
055: private final EventType type;
056: private final ILayer layer;
057:
058: /**
059: * Construct <code>EditManagerEvent</code>.
060: *
061: * @param source the object that raised the event.
062: * @param type the type of event this object represents.
063: * @param newValue the new value, if this applies.
064: * @param oldValue the old value, if this applies.
065: */
066: public MapCompositionEvent(IMap source, EventType type,
067: Object newValue, Object oldValue, ILayer layer) {
068: super (source, newValue, oldValue);
069: this .type = type;
070: this .layer = layer;
071: }
072:
073: /**
074: * Gets the type of the event.
075: *
076: * @return the type of the event.
077: * @see MapEventType
078: */
079: public EventType getType() {
080: return type;
081: }
082:
083: /**
084: * Returns the layer modified if the event type was {@link EventType#ADDED}, {@link EventType#REMOVED} or {@link EventType#REORDERED}.
085: * @return Returns the layer.
086: */
087: public ILayer getLayer() {
088: return layer;
089: }
090:
091: @Override
092: public String toString() {
093: return getSource().getName()
094: + " eventType=" + type + " old=" + oldValue + " new=" + newValue; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
095: }
096:
097: @Override
098: public IMap getSource() {
099: return (IMap) source;
100: }
101: }
|