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 | |
| 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')
| -rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/Gui.java | 35 | ||||
| -rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java | 14 |
2 files changed, 43 insertions, 6 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; diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java index 046b86f9..53e6b5ad 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java @@ -484,11 +484,15 @@ public class ThriftActions { ext = diskImage.format.extension; } if (diskImage.isCompressed) { - Gui.asyncMessageBox("Die heruntergeladene VM '" + imageName + "' ist ein" - + "\nkomprimiertes Abbild. Sie müssen das Abbild dekomprimieren," - + "\nbevor Sie es verändern können. Die VM wird lokal voraussichtlich nicht startfähig sein!" - + "\n\nBitte lesen Sie die Hinweise unter https://www.bwlehrpool.de/doku.php/client/vmdk-disk-type", MessageType.WARNING, null, - null); // TODO + String msg = "<html>Die heruntergeladene VM '" + imageName + "' ist ein komprimiertes " + + "Abbild.<br>Sie müssen das Abbild dekomprimieren, bevor Sie es verändern " + + "können.<br> Die VM wird lokal voraussichtlich nicht startfähig sein!" + + "<br><br>Bitte lesen Sie die Hinweise unter " + + "<a href=\"https://www.bwlehrpool.de/doku.php/client/vmdk-disk-type\">" + + "VMDK Disk Types</a>"; + + Gui.asyncMessageBox(msg, MessageType.WARNING, null, + null); } } File destImage = new File(destDir.getAbsolutePath(), VmWrapper.generateFilename( |
