From 632c736db58aed805846fe3c7b1afbdc4b4162bc Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Sat, 1 Dec 2012 13:36:54 +0900 Subject: [PATCH] Enhance browser support. Use java.awt.Desktop in case his desktop supports it. --- src/com/romraider/net/BrowserControl.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/com/romraider/net/BrowserControl.java b/src/com/romraider/net/BrowserControl.java index 2df53152..6a376883 100644 --- a/src/com/romraider/net/BrowserControl.java +++ b/src/com/romraider/net/BrowserControl.java @@ -21,6 +21,8 @@ package com.romraider.net; import org.apache.log4j.Logger; import java.io.IOException; +import java.lang.reflect.Method; +import java.net.URI; public class BrowserControl { private static final Logger LOGGER = Logger.getLogger(BrowserControl.class); @@ -30,6 +32,18 @@ public class BrowserControl { } public static void displayURL(String url) { + try { + Class display = Class.forName("java.awt.Desktop"); + Object getDesktopMethod = display.getDeclaredMethod("getDesktop").invoke(null); + Method browseMethod = display.getDeclaredMethod("browse", java.net.URI.class); + browseMethod.invoke(getDesktopMethod, new URI(url)); + } catch (Exception e) { + LOGGER.debug("Failed to display URL via java.awt.Desktop. Calling by OS depended method.", e); + displayURLtraditional(url); + } + } + + private static void displayURLtraditional(String url) { boolean windows = isWindowsPlatform(); String cmd = null; try { @@ -72,4 +86,4 @@ public class BrowserControl { private static final String WIN_FLAG = "url.dll,FileProtocolHandler"; private static final String UNIX_PATH = "netscape"; private static final String UNIX_FLAG = "-remote openURL"; -} \ No newline at end of file +}