From 1176f7891b62cc68fea9a63c5aa3e6a10c8febc9 Mon Sep 17 00:00:00 2001 From: mguessan Date: Mon, 20 Oct 2008 11:05:35 +0000 Subject: [PATCH] SWT failover for Desktop.browse with Program.launch in AboutFrame git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@147 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/AboutFrame.java | 29 ++++++++++++++----- src/java/davmail/AwtDesktopBrowser.java | 17 +++++++++++ src/java/davmail/SwtDesktopBrowser.java | 16 ++++++++++ .../davmail/exchange/ExchangeSession.java | 8 ++--- src/java/davmail/tray/AwtGatewayTray.java | 2 +- src/java/davmail/tray/DavGatewayTray.java | 2 +- src/java/davmail/tray/SwtGatewayTray.java | 9 ++++-- 7 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 src/java/davmail/AwtDesktopBrowser.java create mode 100644 src/java/davmail/SwtDesktopBrowser.java diff --git a/src/java/davmail/AboutFrame.java b/src/java/davmail/AboutFrame.java index 720c05e1..96cb2da1 100644 --- a/src/java/davmail/AboutFrame.java +++ b/src/java/davmail/AboutFrame.java @@ -1,6 +1,6 @@ package davmail; -import org.apache.log4j.Logger; +import davmail.tray.DavGatewayTray; import javax.imageio.ImageIO; import javax.swing.*; @@ -18,8 +18,6 @@ import java.net.URL; * About frame */ public class AboutFrame extends JFrame { - protected static final Logger LOGGER = Logger.getLogger(AboutFrame.class); - public AboutFrame() { setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setTitle("About DavMail"); @@ -34,7 +32,7 @@ public class AboutFrame extends JFrame { imagePanel.add(imageLabel); add("West", imagePanel); } catch (IOException e) { - LOGGER.error("Unable to create icon", e); + DavGatewayTray.error("Unable to create icon", e); } Package davmailPackage = this.getClass().getPackage(); StringBuilder buffer = new StringBuilder(); @@ -62,11 +60,28 @@ public class AboutFrame extends JFrame { public void hyperlinkUpdate(HyperlinkEvent hle) { if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) { try { - Desktop desktop = Desktop.getDesktop(); - desktop.browse(hle.getURL().toURI()); + // trigger ClassNotFoundException + ClassLoader classloader = AboutFrame.class.getClassLoader(); + classloader.loadClass("java.awt.Desktop"); + + // Open link in default browser + AwtDesktopBrowser.browse(hle.getURL().toURI()); dispose(); + } catch (ClassNotFoundException e) { + DavGatewayTray.debug("Java 6 Desktop class not available"); + // failover : try SWT + try { + // trigger ClassNotFoundException + ClassLoader classloader = AboutFrame.class.getClassLoader(); + classloader.loadClass("org.eclipse.swt.program.Program"); + SwtDesktopBrowser.browse(hle.getURL().toURI()); + } catch (ClassNotFoundException e2) { + DavGatewayTray.error("Open link not supported (tried AWT Desktop and SWT Program"); + } catch (Exception e2) { + DavGatewayTray.error("Unable to open link", e2); + } } catch (Exception e) { - LOGGER.error("Unable to open link", e); + DavGatewayTray.error("Unable to open link", e); } } } diff --git a/src/java/davmail/AwtDesktopBrowser.java b/src/java/davmail/AwtDesktopBrowser.java new file mode 100644 index 00000000..c6a46ad9 --- /dev/null +++ b/src/java/davmail/AwtDesktopBrowser.java @@ -0,0 +1,17 @@ +package davmail; + +import java.io.IOException; +import java.net.URI; +import java.awt.*; + +/** + * Wrapper class to call Java6 Desktop class to launch default browser. + */ +public class AwtDesktopBrowser { + + public static void browse(URI location) throws IOException { + Desktop desktop = Desktop.getDesktop(); + desktop.browse(location); + } + +} diff --git a/src/java/davmail/SwtDesktopBrowser.java b/src/java/davmail/SwtDesktopBrowser.java new file mode 100644 index 00000000..d77f55dd --- /dev/null +++ b/src/java/davmail/SwtDesktopBrowser.java @@ -0,0 +1,16 @@ +package davmail; + +import org.eclipse.swt.program.Program; + +import java.io.IOException; +import java.net.URI; + +/** + * Wrapper class to call SWT Program class to launch default browser. + */ +public class SwtDesktopBrowser { + public static void browse(URI location) throws IOException { + Program.launch(location.toString()); + } + +} diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index fd8d5ae4..06319df9 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -219,13 +219,13 @@ public class ExchangeSession { final String FORM_ACTION = "