From dc44f65e48487cee19eaeb908e8c7a2d4a383e3e Mon Sep 17 00:00:00 2001
From: Steffen Ritter
Date: Thu, 21 Jun 2018 11:25:47 +0200
Subject: [client] showMessagBox with clickable Hyperlink
---
.../src/main/java/org/openslx/dozmod/gui/Gui.java | 35 +++++++++++++++++++++-
.../org/openslx/dozmod/thrift/ThriftActions.java | 14 +++++----
2 files changed, 43 insertions(+), 6 deletions(-)
(limited to 'dozentenmodul/src/main/java')
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("")) {
+ 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 = "Die heruntergeladene VM '" + imageName + "' ist ein komprimiertes "
+ + "Abbild.
Sie müssen das Abbild dekomprimieren, bevor Sie es verändern "
+ + "können.
Die VM wird lokal voraussichtlich nicht startfähig sein!"
+ + "
Bitte lesen Sie die Hinweise unter "
+ + ""
+ + "VMDK Disk Types";
+
+ Gui.asyncMessageBox(msg, MessageType.WARNING, null,
+ null);
}
}
File destImage = new File(destDir.getAbsolutePath(), VmWrapper.generateFilename(
--
cgit v1.2.3-55-g7522