package com.jbidwatcher.platform;
/*
* Copyright (c) 2000-2007, CyberFOX Software, Inc. All Rights Reserved.
*
* Developed by mrs (Morgan Schweers)
*/
import com.jbidwatcher.util.queue.MessageQueue;
import com.jbidwatcher.util.queue.MQFactory;
import com.jbidwatcher.util.config.JConfig;
import com.jbidwatcher.util.browser.WindowsBrowserLauncher;
import com.jbidwatcher.util.browser.BrowserLauncher;
import java.awt.*;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
public class Browser extends JConfig implements MessageQueue.Listener {
private static Browser sInstance;
public void messageAction(Object deQ) {
String msg = (String)deQ;
launchBrowser(msg);
}
public static String getBrowserCommand() {
String osName = getOS();
if(osName.equalsIgnoreCase("windows")) {
return WindowsBrowserLauncher.getBrowser("http");
} else {
return "firefox";
}
}
public static boolean launchBrowser(String url) {
boolean browserLaunched = false;
String errorMessage = "";
boolean forceOverride = JConfig.queryConfiguration("browser.override", "false").equals("true");
if(Desktop.isDesktopSupported() && !forceOverride) {
try {
Desktop.getDesktop().browse(new URI(url));
browserLaunched = true;
} catch (URISyntaxException syntaxError) {
errorMessage = ": " + syntaxError.getMessage();
} catch (IOException launchFailed) {
JConfig.log().logMessage("Failed to launch: " + launchFailed.getMessage());
}
}
// If it didn't launch, either because Desktop wasn't supported, or an error occurred, try again.
if(!browserLaunched && errorMessage.isEmpty()) {
// Old/deprecated browser launching
browserLaunched = oldBrowse(url);
}
if(!browserLaunched) {
JConfig.log().logMessage("Could not browse to " + url + errorMessage);
}
return browserLaunched;
}
private static boolean oldBrowse(String url) {
String osName = getOS();
String launchCommand = JConfig.queryConfiguration("browser.launch." + osName);
if(launchCommand == null) {
launchCommand = JConfig.queryConfiguration("browser.launch");
if(launchCommand == null) {
launchCommand = "firefox";
}
}
try {
BrowserLauncher.openURL(url, launchCommand, JConfig.queryConfiguration("browser.override", "false").equals("true"));
} catch(IOException e) {
JConfig.log().handleException("Launching browser", e);
return true;
}
return false;
}
public static void start() {
if(sInstance == null) MQFactory.getConcrete("browse").registerListener(sInstance = new Browser());
}
}