From b1c8641a63a67e3c64d948f9e8dce5c01e11e2dd Mon Sep 17 00:00:00 2001 From: mcentner Date: Wed, 5 May 2010 15:29:01 +0000 Subject: Merged feature branch mocca-1.2.13-id@r724 back to trunk. git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@725 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../java/at/gv/egiz/bku/local/gui/GUIProxy.java | 2 +- .../gv/egiz/bku/local/gui/LocalHelpListener.java | 58 ++++++++++++++-------- 2 files changed, 38 insertions(+), 22 deletions(-) (limited to 'BKULocal/src/main/java/at/gv/egiz/bku/local/gui') diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java index 38dd04d9..a9f21087 100644 --- a/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java @@ -30,7 +30,7 @@ public class GUIProxy implements InvocationHandler { JFrame frame; BKUGUIFacade delegate; - static public Object newInstance(BKUGUIFacade gui, JFrame frame, Class[] interfaces) { + static public Object newInstance(BKUGUIFacade gui, JFrame frame, Class[] interfaces) { return java.lang.reflect.Proxy.newProxyInstance(gui.getClass().getClassLoader(), interfaces, new GUIProxy(gui, frame)); diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java index c957e132..ced47d6c 100644 --- a/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java @@ -16,46 +16,62 @@ */ package at.gv.egiz.bku.local.gui; -import at.gv.egiz.bku.gui.AbstractHelpListener; -import at.gv.egiz.bku.gui.DefaultHelpListener; +import at.gv.egiz.bku.gui.ViewerHelpListener; import java.awt.Desktop; -import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URL; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.net.URI; import java.util.Locale; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** - * Open help document in browser, fallback to default (swing dialog) if Java Desktop API not supported. + * Open help document in browser, fallback to help viewer (swing dialog) if Java Desktop API not supported. * * @author Clemens Orthacker */ -public class LocalHelpListener extends AbstractHelpListener { +public class LocalHelpListener extends ViewerHelpListener { + private final Logger log = LoggerFactory.getLogger(LocalHelpListener.class); + protected Desktop desktop; - protected DefaultHelpListener fallback; - public LocalHelpListener(URL baseURL, Locale locale) { - super(baseURL, locale); - if (Desktop.isDesktopSupported()) { + public LocalHelpListener(String helpURL, Locale locale) { + super(helpURL, locale); + if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { desktop = Desktop.getDesktop(); } else { - log.info("Java Desktop API not available on current platform (libgnome installed?), falling back to DefaultHelpListener"); - fallback = new DefaultHelpListener(baseURL, locale); + log.warn("Java Desktop API not available on current platform (libgnome installed?), " + + "falling back to help viewer"); + } + } + + @Override + public void mouseClicked(MouseEvent e) { + if (desktop != null) { + try { + desktop.browse(new URI(getHelpURL())); + } catch (Exception ex) { + log.error("Failed display help document {}.", getHelpURL(), ex); + super.mouseClicked(e); + } + } else { + super.mouseClicked(e); } } @Override - public void showDocument(URL helpDocument, String helpTopic) throws IOException, URISyntaxException { + public void keyPressed(KeyEvent e) { if (desktop != null) { - if (!desktop.isSupported(Desktop.Action.BROWSE)) { - log.error("Failed to open default browser: The system provides the Desktop API, but does not support the BROWSE action"); - } else { - Desktop.getDesktop().browse(helpDocument.toURI()); + try { + desktop.browse(new URI(getHelpURL())); + } catch (Exception ex) { + log.error("Failed display help document {}.", getHelpURL(), ex); + super.keyPressed(e); } - } else if (fallback != null) { - fallback.showDocument(helpDocument, helpTopic); } else { - log.error("failed to display help document"); + super.keyPressed(e); } } } -- cgit v1.2.3