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}