001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.spi.preferences;
003
004import java.util.EventObject;
005
006/**
007 * Default implementation of the {@link PreferenceChangeEvent} interface.
008 * @since 12881
009 */
010public class DefaultPreferenceChangeEvent extends EventObject implements PreferenceChangeEvent {
011
012    private static final long serialVersionUID = 1L;
013
014    private final String key;
015    private final Setting<?> oldValue;
016    private final Setting<?> newValue;
017
018    /**
019     * Constructs a new {@code DefaultPreferenceChangeEvent}.
020     * @param source the class source of this event
021     * @param key preference key
022     * @param oldValue preference old value
023     * @param newValue preference new value
024     * @since 14977
025     */
026    public DefaultPreferenceChangeEvent(Class<?> source, String key, Setting<?> oldValue, Setting<?> newValue) {
027        super(source);
028        this.key = key;
029        this.oldValue = oldValue;
030        this.newValue = newValue;
031    }
032
033    @Override
034    public Class<?> getSource() {
035        return (Class<?>) super.getSource();
036    }
037
038    @Override
039    public String getKey() {
040        return key;
041    }
042
043    @Override
044    public Setting<?> getOldValue() {
045        return oldValue;
046    }
047
048    @Override
049    public Setting<?> getNewValue() {
050        return newValue;
051    }
052
053}