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}