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.apache.log4j.Logger; 012import org.openstreetmap.josm.gui.Notification; 013import org.openstreetmap.josm.plugins.streetside.utils.StreetsideUtils; 014import org.openstreetmap.josm.tools.ImageProvider; 015import org.openstreetmap.josm.tools.ImageProvider.ImageSizes; 016 017public class WebLinkAction extends AbstractAction { 018 019 private static final long serialVersionUID = -8168227661356480455L; 020 021 final static Logger logger = Logger.getLogger(WebLinkAction.class); 022 023 private URL url; 024 025 public WebLinkAction(final String name, final URL url) { 026 super(name, ImageProvider.get("link", ImageSizes.SMALLICON)); 027 setURL(url); 028 } 029 030 /** 031 * @param url the url to set 032 */ 033 public final void setURL(URL url) { 034 this.url = url; 035 setEnabled(url != null); 036 } 037 038 /* (non-Javadoc) 039 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) 040 */ 041 @Override 042 public void actionPerformed(ActionEvent e) { 043 try { 044 StreetsideUtils.browse(url); 045 } catch (IOException e1) { 046 String msg = "Could not open the URL " + url == null ? "‹null›" : url + " in a browser"; 047 logger.warn(msg, e1); 048 new Notification(msg).setIcon(JOptionPane.WARNING_MESSAGE).show(); 049 } 050 } 051}