/* Copyright (C) 2013-2020 Nicola L.C. Talbot www.dickimaw-books.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package com.dickimawbooks.makeglossariesgui; import java.awt.*; import java.awt.event.*; import java.awt.datatransfer.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.text.html.*; public class DiagnosticPanel extends JEditorPane { public DiagnosticPanel(MakeGlossariesGUI application) { super("text/html", ""); app = application; setEditable(false); addHyperlinkListener(app); addMouseListener(app); setFont(app.getFont()); setTransferHandler(app.getTransferHandler()); ((HTMLEditorKit)getEditorKit()).setAutoFormSubmission(false); } public void updateDiagnostics() { Font font = app.getFont(); StyleSheet stylesheet = ((HTMLDocument)getDocument()).getStyleSheet(); stylesheet.addRule("body { font-size: "+font.getSize()+"pt; }"); stylesheet.addRule("body { font-family: "+font.getName()+"; }"); stylesheet.addRule("body { font-weight: "+(font.isBold()?"bold":"normal")+"; }"); stylesheet.addRule("body { font-style: "+(font.isItalic()?"italic":"normal")+"; }"); stylesheet.addRule("input { vertical-align: baseline; }"); MakeGlossariesInvoker invoker = app.getInvoker(); String message = app.diagnosticsForm(); String results = app.getScriptTestResults(); if (results != null) { message += results; } if (invoker.getGlossaries() == null) { message = String.format("%s<p>%s", invoker.getLabelWithValues("diagnostics.no_file", invoker.getLabel("file"), invoker.getLabel("file.open")), message); } else { String advisory = invoker.getGlossaries().getAdvisoryMessages(); String diagnostics = invoker.getGlossaries().getDiagnostics(); if (diagnostics == null) { message = String.format("%s<p>%s", invoker.getLabel("diagnostics.no_errors"), message); } else { app.selectDiagnosticComponent(); message = String.format("%s<p>%s", diagnostics, message); } if (advisory != null) { message = String.format("%s<h2>%s</h2>%s", message, invoker.getLabel("diagnostics.advisory"), advisory); } } setText(message); } private MakeGlossariesGUI app; }