001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.preferences;
003
004/**
005 * Setting containing a {@link String} value.
006 * @since 9759
007 */
008public class StringSetting extends AbstractSetting<String> {
009    /**
010     * Constructs a new {@code StringSetting} with the given value
011     * @param value The setting value
012     */
013    public StringSetting(String value) {
014        super(value);
015    }
016
017    @Override
018    public boolean equalVal(String otherVal) {
019        if (value == null)
020            return otherVal == null;
021        return value.equals(otherVal);
022    }
023
024    @Override
025    public StringSetting copy() {
026        return new StringSetting(value);
027    }
028
029    @Override
030    public void visit(SettingVisitor visitor) {
031        visitor.visit(this);
032    }
033
034    @Override
035    public StringSetting getNullInstance() {
036        return new StringSetting(null);
037    }
038
039    @Override
040    public boolean equals(Object other) {
041        if (!(other instanceof StringSetting))
042            return false;
043        return equalVal(((StringSetting) other).getValue());
044    }
045}