// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.tracer2.preferences; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.Component; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.gui.ExtendedDialog; import org.openstreetmap.josm.tools.GBC; public class ServerParamDialog extends ExtendedDialog { /** * */ private static final long serialVersionUID = -3229680217088662218L; private String[] m_astrTileSize = new String[] {"0.0001", "0.0002", "0.0004", "0.0008", "0.001", "0.002", "0.004", "0.008", "0.01"}; private String[] m_astrResolution = new String[] {"512", "1024", "2048", "4096"}; private String[] m_astrMode = new String[] {"boundary", "match color"}; private String[] m_astrPointsPerCircle = new String[] {"0", "8", "12", "16", "20", "24", "32"}; private ServerParam m_oParam; private JPanel m_oPanel = new JPanel(new GridBagLayout()); private JTextField m_oName = new JTextField(); private JTextField m_oDescription = new JTextField(); private JTextArea m_oUrl = new JTextArea(5, 5); private JComboBox<String> m_oTileSize; private JComboBox<String> m_oResolution; //private JTextField m_oSkipBottom = new JTextField(); private JComboBox<String> m_oMode; private JTextField m_oThreshold = new JTextField(); private JComboBox<String> m_oPointsPerCircle; private JTextField m_oTag = new JTextField(); private JTextField m_oPreferredValues = new JTextField(); private JScrollPane m_oScrollpaneUrl; public ServerParam getServerParam() { return m_oParam; } private void addLabelled(String str, Component c) { JLabel label = new JLabel(str); m_oPanel.add(label, GBC.std()); label.setLabelFor(c); m_oPanel.add(c, GBC.eol().fill(GridBagConstraints.HORIZONTAL)); } private void addGap() { JPanel p = new JPanel(); p.setMinimumSize(new Dimension(10, 0)); m_oPanel.add(p, GBC.eol().fill(GridBagConstraints.HORIZONTAL)); } private void load() { m_oName.setText(m_oParam.getName()); m_oDescription.setText(m_oParam.getDescription()); m_oUrl.setText(m_oParam.getUrl()); loadComboBox(m_oTileSize, m_oParam.getTileSize(), m_astrTileSize); loadComboBox(m_oResolution, m_oParam.getResolution(), m_astrResolution); //m_oSkipBottom.setText(param.getSkipBottom()); loadComboBox(m_oMode, m_oParam.getMode(), m_astrMode); m_oThreshold.setText(m_oParam.getThreshold()); loadComboBox(m_oPointsPerCircle, m_oParam.getPointsPerCircle(), m_astrPointsPerCircle); m_oTag.setText(m_oParam.getTag()); m_oPreferredValues.setText(m_oParam.getPreferredValues()); } private void save() { m_oParam.setName(m_oName.getText()); m_oParam.setDescription(m_oDescription.getText()); m_oParam.setUrl(m_oUrl.getText()); m_oParam.setTileSize(saveComboBox(m_oTileSize, m_astrTileSize)); m_oParam.setResolution(saveComboBox(m_oResolution, m_astrResolution)); //m_oParam.setSkipBottom(m_oSkipBottom.getText()); m_oParam.setMode(saveComboBox(m_oMode, m_astrMode)); m_oParam.setThreshold(m_oThreshold.getText()); m_oParam.setPointsPerCircle(saveComboBox(m_oPointsPerCircle, m_astrPointsPerCircle)); m_oParam.setTag(m_oTag.getText()); m_oParam.setPreferredValues(m_oPreferredValues.getText()); } private void loadComboBox(JComboBox<?> c, String strValue, String[] astrValues) { int pos = 0; for (String str: astrValues) { if (strValue.equals(str)) { c.setSelectedIndex(pos); return; } pos++; } } private String saveComboBox(JComboBox<?> c, String[] astrValues) { return astrValues[c.getSelectedIndex()]; } public ServerParamDialog(ServerParam param) { super(Main.parent, tr("Tracer2") + " - " + tr("Parameter for server request"), new String[] {tr("OK"), tr("Cancel")}, true); if (param == null) { m_oParam = new ServerParam(); } else { m_oParam = param; } contentInsets = new Insets(15, 15, 5, 15); setButtonIcons(new String[] {"ok.png", "cancel.png"}); m_oTileSize = new JComboBox<>(m_astrTileSize); m_oResolution = new JComboBox<>(m_astrResolution); m_oMode = new JComboBox<>(m_astrMode); m_oPointsPerCircle = new JComboBox<>(m_astrPointsPerCircle); load(); addLabelled(tr("Name:"), m_oName); addLabelled(tr("Description:"), m_oDescription); addGap(); m_oUrl.setLineWrap(true); m_oScrollpaneUrl = new JScrollPane(m_oUrl); addLabelled(tr("URL:"), m_oScrollpaneUrl); addGap(); addLabelled(tr("Tile size:"), m_oTileSize); addLabelled(tr("Resolution:"), m_oResolution); //addLabelled(tr("Skip bottom:"), m_oSkipBottom); addGap(); addLabelled(tr("Mode:"), m_oMode); addLabelled(tr("Threshold:"), m_oThreshold); addGap(); addLabelled(tr("Points per circle:"), m_oPointsPerCircle); addGap(); addLabelled(tr("Tag:"), m_oTag); addLabelled(tr("Preferred values:"), m_oPreferredValues); setMinimumSize(new Dimension(500, 0)); setContent(m_oPanel); setupDialog(); } @Override protected void buttonAction(int buttonIndex, ActionEvent evt) { if (evt.getActionCommand().equals(tr("OK"))) { save(); } else { m_oParam = null; } super.buttonAction(buttonIndex, evt); } }