001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.plugins.streetside.gui.imageinfo; 003 004import java.awt.event.ActionEvent; 005import java.io.IOException; 006import java.net.URL; 007 008import javax.swing.AbstractAction; 009import javax.swing.JOptionPane; 010 011import org.openstreetmap.josm.gui.Notification; 012import org.openstreetmap.josm.plugins.streetside.utils.StreetsideUtils; 013import org.openstreetmap.josm.tools.I18n; 014import org.openstreetmap.josm.tools.ImageProvider; 015import org.openstreetmap.josm.tools.ImageProvider.ImageSizes; 016import org.openstreetmap.josm.tools.Logging; 017 018public class WebLinkAction extends AbstractAction { 019 020 private static final long serialVersionUID = -8168227661356480455L; 021 022 private URL url; 023 024 public WebLinkAction(final String name, final URL url) { 025 super(name, ImageProvider.get("link", ImageSizes.SMALLICON)); 026 setURL(url); 027 } 028 029 /** 030 * @param url the url to set 031 */ 032 public final void setURL(URL url) { 033 this.url = url; 034 setEnabled(url != null); 035 } 036 037 /* (non-Javadoc) 038 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) 039 */ 040 @Override 041 public void actionPerformed(ActionEvent e) { 042 try { 043 StreetsideUtils.browse(url); 044 } catch (IOException e1) { 045 String msg = I18n.tr("Could not open the URL {0} in a browser", url == null ? "‹null›" : url); 046 Logging.log(Logging.LEVEL_WARN, msg, e1); 047 new Notification(msg).setIcon(JOptionPane.WARNING_MESSAGE).show(); 048 } 049 } 050}