diff options
author | Steffen Ritter | 2018-06-21 11:25:47 +0200 |
---|---|---|
committer | Steffen Ritter | 2018-06-21 11:25:47 +0200 |
commit | dc44f65e48487cee19eaeb908e8c7a2d4a383e3e (patch) | |
tree | b2cf9e901bd760fd0e1852f615b24d1808a7f74f /dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java | |
parent | [client] Switch over LectureDetailsWindow to new change monitor system (diff) | |
download | tutor-module-dc44f65e48487cee19eaeb908e8c7a2d4a383e3e.tar.gz tutor-module-dc44f65e48487cee19eaeb908e8c7a2d4a383e3e.tar.xz tutor-module-dc44f65e48487cee19eaeb908e8c7a2d4a383e3e.zip |
[client] showMessagBox with clickable Hyperlink
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java index 9bddb652..bf6cf060 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java @@ -3,6 +3,7 @@ package org.openslx.dozmod.gui; import java.awt.AWTEvent; import java.awt.Component; import java.awt.Dimension; +import java.awt.Font; import java.awt.Frame; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; @@ -14,17 +15,24 @@ import java.awt.Toolkit; import java.awt.Window; import java.awt.event.AWTEventListener; import java.lang.reflect.InvocationTargetException; +import java.net.URISyntaxException; import java.util.concurrent.atomic.AtomicReference; import javax.management.monitor.Monitor; import javax.swing.Icon; +import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; +import javax.swing.text.html.HTMLDocument; import org.apache.log4j.Logger; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.helper.MessageType; +import org.openslx.dozmod.util.OpenLinks; import org.openslx.util.QuickTimer; import org.openslx.util.ResourceLoader; @@ -287,7 +295,7 @@ public class Gui { * Generic helper to show a message box to the user, and optionally log the * message to the log file. * - * @param parent partent window (used for positioning/modality). If null, + * @param parent parent window (used for positioning/modality). If null, * the active window will be used * @param message Message to display. Can be multi line. * @param messageType Type of message (warning, information) @@ -313,6 +321,31 @@ public class Gui { message += "\n\n" + exception.getClass().getSimpleName() + "\n" + exception.getMessage() + "\n" + " (Für Stack-Trace siehe Logdatei)"; } + if (message.startsWith("<html>")) { + JEditorPane ep = new JEditorPane("text/html", message); + ep.setEditable(false); + ep.setOpaque(false); + + Font font = UIManager.getFont("Label.font"); + String bodyRule = "body { font-family: " + font.getFamily() + "; " + + "font-size: " + font.getSize() + "pt; }"; + ((HTMLDocument)ep.getDocument()).getStyleSheet().addRule(bodyRule); + + ep.addHyperlinkListener(new HyperlinkListener() { + @Override + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) { + try { + OpenLinks.openWebpageUri(e.getURL().toURI()); + } catch (URISyntaxException ex) { + LOGGER.error("Couldn't parse hyperlink", ex); + } + } + } + }); + JOptionPane.showMessageDialog(parent, ep, messageType.title, messageType.optionPaneId); + return true; + } if (messageType.buttons == -1) { JOptionPane.showMessageDialog(parent, message, messageType.title, messageType.optionPaneId); return true; |