// 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.GridBagLayout; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.gui.widgets.JMultilineLabel; import org.openstreetmap.josm.tools.GBC; public class ServerParam { protected boolean m_bEnabled; private String m_strName = "Name"; private String m_strDescription = ""; private String m_strUrl = ""; private String m_strTileSize = "0.0004"; private String m_strResolution = "2048"; private String m_strSkipBottom = "0"; private String m_strMode = "boundary"; private String m_strThreshold = "127"; private String m_strPointsPerCircle = "16"; private String m_strTag = "building"; private String m_strPreferredValues = "yes;house;garage"; protected JMenuItem m_oMenuItem; public boolean isEnabled() { return m_bEnabled; } public void setEnabled(boolean enabled) { if (!m_bEnabled ^ enabled) return; m_bEnabled = enabled; } public String getName() { return m_strName; } public void setName(String name) { m_strName = name; } public String getDescription() { return m_strDescription; } public void setDescription(String description) { m_strDescription = description; } public String getUrl() { return m_strUrl; } public void setUrl(String url) { m_strUrl = url; } public String getTileSize() { return m_strTileSize; } public void setTileSize(String tileSize) { m_strTileSize = tileSize; } public String getResolution() { return m_strResolution; } public void setResolution(String resolution) { m_strResolution = resolution; } public String getSkipBottom() { return m_strSkipBottom; } public void setSkipBottom(String skipBottom) { m_strSkipBottom = skipBottom; } public String getMode() { return m_strMode; } public void setMode(String mode) { m_strMode = mode; } public String getThreshold() { return m_strThreshold; } public void setThreshold(String threshold) { m_strThreshold = threshold; } public String getPointsPerCircle() { return m_strPointsPerCircle; } public void setPointsPerCircle(String pointsPerCircle) { m_strPointsPerCircle = pointsPerCircle; } public String getTag() { return m_strTag; } public void setTag(String tag) { m_strTag = tag; } public String getPreferredValues() { return m_strPreferredValues; } public void setPreferredValues(String preferredValues) { m_strPreferredValues = preferredValues; } public ServerParam() { m_bEnabled = false; } public ServerParam(String name) { this(); m_strName = name; } public String serialize() { StringBuilder oBuilder = new StringBuilder(); oBuilder.append("name=").append(m_strName).append('\n'); oBuilder.append("description=").append(m_strDescription).append('\n'); oBuilder.append("url=").append(m_strUrl).append('\n'); oBuilder.append("tileSize=").append(m_strTileSize).append('\n'); oBuilder.append("resolution=").append(m_strResolution).append('\n'); oBuilder.append("skipBottom=").append(m_strSkipBottom).append('\n'); oBuilder.append("mode=").append(m_strMode).append('\n'); oBuilder.append("threshold=").append(m_strThreshold).append('\n'); oBuilder.append("pointsPerCircle=").append(m_strPointsPerCircle).append('\n'); oBuilder.append("tag=").append(m_strTag).append('\n'); oBuilder.append("preferredValues=").append(m_strPreferredValues).append('\n'); oBuilder.append("enabled=").append(m_bEnabled).append('\n'); oBuilder.append('\n'); return oBuilder.toString(); } public static ServerParam unserialize(String str) { ServerParam oParam = new ServerParam(); String[] lines = str.split("\n"); for (String line : lines) { String[] parts = line.split("=", 2); if (parts[0].equals("name")) oParam.m_strName = parts[1]; else if (parts[0].equals("description")) oParam.m_strDescription = parts[1]; else if (parts[0].equals("url")) oParam.m_strUrl = parts[1]; else if (parts[0].equals("tileSize")) oParam.m_strTileSize = parts[1]; else if (parts[0].equals("resolution")) oParam.m_strResolution = parts[1]; else if (parts[0].equals("skipBottom")) oParam.m_strSkipBottom = parts[1]; else if (parts[0].equals("mode")) oParam.m_strMode = parts[1]; else if (parts[0].equals("threshold")) oParam.m_strThreshold = parts[1]; else if (parts[0].equals("pointsPerCircle")) oParam.m_strPointsPerCircle = parts[1]; else if (parts[0].equals("tag")) oParam.m_strTag = parts[1]; else if (parts[0].equals("preferredValues")) oParam.m_strPreferredValues = parts[1]; else if (parts[0].equals("enabled")) oParam.m_bEnabled = parts[1].equalsIgnoreCase("true"); } return oParam; } protected void showErrorMessage(String message, String details) { final JPanel p = new JPanel(new GridBagLayout()); p.add(new JMultilineLabel(message), GBC.eol()); if (details != null) { JTextArea info = new JTextArea(details, 20, 60); info.setCaretPosition(0); info.setEditable(false); p.add(new JScrollPane(info), GBC.eop()); } SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JOptionPane.showMessageDialog(Main.parent, p, tr("Tracer2 error"), JOptionPane.ERROR_MESSAGE); } }); } }