/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package mage.client.util; import java.awt.Desktop; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import javax.swing.JLabel; /** * * @author Dahny */ public class URLHandler { private static MouseAdapter currentMouseAdapter; /** * This method makes a URL in a message click-able and converts the message * into HTML. * * @param message: The selected message * @param label: The message of the day label */ public static void handleMessage(String message, JLabel label) { String url = detectURL(message); if (!url.equals("")) { label.addMouseListener(createMouseAdapter(url)); } label.setText(convertToHTML(message)); } public static void RemoveMouseAdapter(JLabel label) { label.removeMouseListener(currentMouseAdapter); currentMouseAdapter = null; } private static MouseAdapter createMouseAdapter(String url) { currentMouseAdapter = new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() > 0) { if (Desktop.isDesktopSupported()) { Desktop desktop = Desktop.getDesktop(); try { URI uri = new URI(url); desktop.browse(uri); } catch (IOException | URISyntaxException ex) { // do nothing } } } } }; return currentMouseAdapter; } public static String convertToHTML(String input) { String s = input; String output = ""; // separate the input by spaces String[] parts = s.split("\\s+"); for (String item : parts) { try { URL url = new URL(item); // The item is already a valid URL output = output + "" + url + " "; } catch (MalformedURLException e) { //The item might still be a URL if (item.startsWith("www.")) { output = output + "" + item + " "; } else { output = output + item + " "; } } } output = output + ""; return output; } public static String detectURL(String input) { String s = input; String output = ""; // separate the input by spaces String[] parts = s.split("\\s+"); for (String item : parts) { try { URL url = new URL(item); // The item is already a valid URL output = url.toString(); } catch (MalformedURLException e) { //The item might still be a URL if (item.startsWith("www.")) { output = "http://" + item; } } } return output; } }