From b9763f8028130439c2bd7fad5f2fb0db59e78f90 Mon Sep 17 00:00:00 2001 From: mguessan Date: Fri, 7 Nov 2008 18:28:16 +0000 Subject: [PATCH] Add help callback on F1 press : open browser on DavMail website git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@177 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/ui/AboutFrame.java | 25 ++---------- src/java/davmail/ui/DesktopBrowser.java | 54 +++++++++++++++++++++++++ src/java/davmail/ui/SettingsFrame.java | 10 +++++ 3 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 src/java/davmail/ui/DesktopBrowser.java diff --git a/src/java/davmail/ui/AboutFrame.java b/src/java/davmail/ui/AboutFrame.java index 385add4d..2c99289d 100644 --- a/src/java/davmail/ui/AboutFrame.java +++ b/src/java/davmail/ui/AboutFrame.java @@ -14,6 +14,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.URL; +import java.net.URISyntaxException; /** * About frame @@ -49,29 +50,11 @@ public class AboutFrame extends JFrame { public void hyperlinkUpdate(HyperlinkEvent hle) { if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) { try { - // 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) { + DesktopBrowser.browse(hle.getURL().toURI()); + } catch (URISyntaxException e) { DavGatewayTray.error("Unable to open link", e); } + dispose(); } } }); diff --git a/src/java/davmail/ui/DesktopBrowser.java b/src/java/davmail/ui/DesktopBrowser.java new file mode 100644 index 00000000..9729981b --- /dev/null +++ b/src/java/davmail/ui/DesktopBrowser.java @@ -0,0 +1,54 @@ +package davmail.ui; + +import davmail.tray.DavGatewayTray; + +import javax.swing.event.HyperlinkEvent; +import java.net.URI; +import java.net.URISyntaxException; + +/** + * Open default browser. + */ +public class DesktopBrowser { + public static void browse(URI location) { + try { + // trigger ClassNotFoundException + ClassLoader classloader = AboutFrame.class.getClassLoader(); + classloader.loadClass("java.awt.Desktop"); + + // Open link in default browser + AwtDesktopBrowser.browse(location); + } 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(location); + } 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) { + DavGatewayTray.error("Unable to open link", e); + } + } + + public static void browse(String location) { + try { + DesktopBrowser.browse(new URI(location)); + } catch (URISyntaxException e) { + DavGatewayTray.error("Unable to open link", e); + } + } + + public static void browse(HyperlinkEvent hle) { + try { + DesktopBrowser.browse(hle.getURL().toURI()); + } catch (URISyntaxException e) { + DavGatewayTray.error("Unable to open link", e); + } + } +} diff --git a/src/java/davmail/ui/SettingsFrame.java b/src/java/davmail/ui/SettingsFrame.java index 015790a8..6d481304 100644 --- a/src/java/davmail/ui/SettingsFrame.java +++ b/src/java/davmail/ui/SettingsFrame.java @@ -9,6 +9,8 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.net.URI; +import java.net.URISyntaxException; /** * DavMail settings frame @@ -177,6 +179,14 @@ public class SettingsFrame extends JFrame { setIconImage(DavGatewayTray.getFrameIcon()); JTabbedPane tabbedPane = new JTabbedPane(); + // add help (F1 handler) + tabbedPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("F1"), + "help"); + tabbedPane.getActionMap().put("help", new AbstractAction() { + public void actionPerformed(ActionEvent e) { + DesktopBrowser.browse("http://davmail.sourceforge.net"); + } + }); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));