001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.preferences.advanced;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.awt.GridBagLayout;
007
008import javax.swing.JComponent;
009import javax.swing.JLabel;
010import javax.swing.JPanel;
011
012import org.openstreetmap.josm.data.preferences.StringSetting;
013import org.openstreetmap.josm.gui.ExtendedDialog;
014import org.openstreetmap.josm.gui.widgets.JosmTextField;
015import org.openstreetmap.josm.tools.GBC;
016
017/**
018 * Editor for String preference entries.
019 */
020public class StringEditor extends ExtendedDialog {
021
022    private final transient PrefEntry entry;
023    private JosmTextField tvalue;
024
025    /**
026     * Constructs a new {@code StringEditor}.
027     * @param gui The parent component
028     * @param entry preference entry
029     * @param setting string setting
030     */
031    public StringEditor(final JComponent gui, PrefEntry entry, StringSetting setting) {
032        super(gui, tr("Change string setting"), new String[] {tr("OK"), tr("Cancel")});
033        this.entry = entry;
034        setButtonIcons(new String[] {"ok.png", "cancel.png"});
035        setContent(build(setting.getValue() == null ? "" : setting.getValue()));
036    }
037
038    /**
039     * Returns the data.
040     * @return the preference data
041     */
042    public String getData() {
043        return tvalue.getText();
044    }
045
046    protected final JPanel build(String orig) {
047        JPanel p = new JPanel(new GridBagLayout());
048        p.add(new JLabel(tr("Key: {0}", entry.getKey())), GBC.eol().insets(0, 0, 5, 0));
049
050        p.add(new JLabel(tr("Value: ")), GBC.std());
051        tvalue = new JosmTextField(orig, 50);
052        p.add(tvalue, GBC.eop().insets(5, 0, 0, 0).fill(GBC.HORIZONTAL));
053
054        return p;
055    }
056}