// Near Infinity - An Infinity Engine Browser and Editor // Copyright (C) 2001 - 2005 Jon Olav Hauglid // See LICENSE.txt for license information package org.infinity.gui; import java.awt.Desktop; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.IOException; import java.net.URI; import javax.swing.JOptionPane; import org.infinity.NearInfinity; /** * Browses for the provided URI on mouse clicks * * @author Fredrik Lindgren */ class UrlBrowser implements MouseListener { private final URI url; /** Opens the specified URL in the system's default browser. */ static boolean openUrl(String url) { boolean retVal = false; Desktop desktop = Desktop.getDesktop(); if (desktop.isSupported(java.awt.Desktop.Action.BROWSE)) { try { desktop.browse(URI.create(url)); retVal = true; } catch (IOException e) { e.printStackTrace(); } } return retVal; } UrlBrowser(String urlText) { url = URI.create(urlText); } private void showErrorMessage() { final String errorMessage = "I can't open an url on this system"; final String errorTitle = "Attention"; JOptionPane.showMessageDialog(NearInfinity.getInstance(), errorMessage, errorTitle, JOptionPane.PLAIN_MESSAGE); } // --------------------- Begin Interface MouseListener --------------------- @Override public void mouseClicked(MouseEvent event) { if (!Desktop.isDesktopSupported()) { showErrorMessage(); } else { try { Desktop desktop = Desktop.getDesktop(); if (!desktop.isSupported(java.awt.Desktop.Action.BROWSE)) { showErrorMessage(); } else { desktop.browse(url); } } catch (java.io.IOException e) { e.printStackTrace(); } } } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } // --------------------- End Interface MouseListener --------------------- }