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 final String key;
013    private final Setting<?> oldValue;
014    private final Setting<?> newValue;
015
016    /**
017     * Constructs a new {@code DefaultPreferenceChangeEvent}.
018     * @param source the class source of this event
019     * @param key preference key
020     * @param oldValue preference old value
021     * @param newValue preference new value
022     * @since 14977
023     */
024    public DefaultPreferenceChangeEvent(Class<?> source, String key, Setting<?> oldValue, Setting<?> newValue) {
025        super(source);
026        this.key = key;
027        this.oldValue = oldValue;
028        this.newValue = newValue;
029    }
030
031    @Override
032    public Class<?> getSource() {
033        return (Class<?>) super.getSource();
034    }
035
036    @Override
037    public String getKey() {
038        return key;
039    }
040
041    @Override
042    public Setting<?> getOldValue() {
043        return oldValue;
044    }
045
046    @Override
047    public Setting<?> getNewValue() {
048        return newValue;
049    }
050
051}