// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.opendata.core.actions; import java.awt.event.ActionEvent; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLEncoder; import javax.swing.Action; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.plugins.opendata.core.OdConstants; import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils; import org.openstreetmap.josm.tools.OpenBrowser; public class OpenLinkAction extends JosmAction { private URL url; public OpenLinkAction(URL url, String icon24Name, String title, String description) { super(title, null, description, null, false); putValue(Action.SMALL_ICON, OdUtils.getImageIcon(icon24Name)); this.url = url; } @Override public void actionPerformed(ActionEvent e) { try { Main.info("Opening "+url); OpenBrowser.displayUrl(url.toURI()); } catch (URISyntaxException e1) { try { Main.error(e1.getLocalizedMessage()); int index = e1.getIndex(); if (index > -1) { String s = url.toString().substring(index, index+1); s = url.toString().replace(s, URLEncoder.encode(s, OdConstants.UTF8)); URI uri = new URI(s); Main.info("Opening "+uri); OpenBrowser.displayUrl(uri); } } catch (Exception e2) { Main.error(e2); } } } }