26 package org.nexusformat.nxvalidate;
28 import java.awt.Color;
29 import java.util.logging.Level;
30 import javax.swing.JTextPane;
31 import javax.swing.text.BadLocationException;
32 import javax.swing.text.Style;
33 import javax.swing.text.StyleConstants;
34 import javax.swing.text.StyleContext;
35 import javax.swing.text.StyledDocument;
36 import java.util.logging.Level;
37 import java.util.logging.Logger;
45 private JTextPane pane = null;
51 private void printValidationErrors(
NXNodeMapper node, StyledDocument doc,
52 int type)
throws BadLocationException {
54 String newline =
"\n";
56 doc.insertString(doc.getLength(), newline + newline,
57 doc.getStyle(
"heading"));
60 doc.insertString(doc.getLength(),
"Validation Tests:" +
61 newline + newline, doc.getStyle(
"heading"));
64 doc.insertString(doc.getLength(),
"Warning Tests:" +
65 newline + newline, doc.getStyle(
"heading"));
68 if (node.getNodeTests() != null) {
69 for (
int i = 0; i < node.getNodeTests().size(); ++i) {
70 doc.insertString(doc.getLength(),
71 node.getNodeTests().get(i), doc.getStyle(
"bold"));
72 doc.insertString(doc.getLength(),
73 newline + newline, doc.getStyle(
"heading"));
78 doc.insertString(doc.getLength(),
"Validation Errors:" +
79 newline + newline, doc.getStyle(
"errorheading"));
82 doc.insertString(doc.getLength(),
"Warning Errors:" +
83 newline + newline, doc.getStyle(
"warningheading"));
86 if (node.getNodeTexts() != null) {
87 for (
int i = 0; i < node.getNodeTexts().size(); ++i) {
90 doc.insertString(doc.getLength(),
91 node.getNodeTexts().get(i), doc.getStyle(
"error"));
94 doc.insertString(doc.getLength(),
95 node.getNodeTexts().get(i), doc.getStyle(
"warning"));
98 doc.insertString(doc.getLength(),
99 newline + newline, doc.getStyle(
"heading"));
104 doc.insertString(doc.getLength(),
"Diagnostic Errors:" +
105 newline + newline, doc.getStyle(
"errorheading"));
108 doc.insertString(doc.getLength(),
"Diagnostic Errors:" +
109 newline + newline, doc.getStyle(
"warningheading"));
112 if (node.getNodeDiags() != null) {
113 for (
int i = 0; i < node.getNodeDiags().size(); ++i) {
116 doc.insertString(doc.getLength(),
117 node.getNodeDiags().get(i), doc.getStyle(
"error"));
120 doc.insertString(doc.getLength(),
121 node.getNodeDiags().get(i), doc.getStyle(
"warning"));
124 doc.insertString(doc.getLength(),
125 newline + newline, doc.getStyle(
"heading"));
133 String newline =
"\n";
135 StyledDocument doc = pane.getStyledDocument();
137 addStylesToDocument(doc);
142 doc.remove(0, doc.getLength());
145 + newline + newline, doc.getStyle(
"title"));
147 doc.insertString(doc.getLength(),
"Attributes:"
148 + newline + newline, doc.getStyle(
"heading"));
151 < atts.length; i++) {
152 doc.insertString(doc.getLength(),
153 "@ " + atts[i] + newline, doc.getStyle(
"bold"));
156 doc.insertString(doc.getLength(), newline + newline,
157 doc.getStyle(
"heading"));
159 doc.insertString(doc.getLength(),
"Node Value:"
160 + newline + newline, doc.getStyle(
"heading"));
162 doc.insertString(doc.getLength(),
163 node.
getValue(), doc.getStyle(
"bold"));
166 printValidationErrors(node, doc, 0);
169 printValidationErrors(node, doc, 1);
172 }
catch (BadLocationException ex) {
173 Logger.getLogger(
TextPaneStyle.class.getName()).log(Level.SEVERE,
179 private void addStylesToDocument(StyledDocument doc) {
182 Style def = StyleContext.getDefaultStyleContext().
183 getStyle(StyleContext.DEFAULT_STYLE);
185 Style regular = doc.addStyle(
"regular", def);
186 StyleConstants.setFontFamily(def,
"SansSerif");
188 Style s = doc.addStyle(
"italic", regular);
189 StyleConstants.setItalic(s,
true);
191 s = doc.addStyle(
"bold", regular);
192 StyleConstants.setBold(s,
true);
194 s = doc.addStyle(
"small", regular);
195 StyleConstants.setFontSize(s, 10);
197 s = doc.addStyle(
"large", regular);
198 StyleConstants.setFontSize(s, 16);
200 s = doc.addStyle(
"heading", regular);
201 StyleConstants.setFontSize(s, 16);
202 StyleConstants.setBold(s,
true);
204 s = doc.addStyle(
"title", regular);
205 StyleConstants.setFontSize(s, 24);
206 StyleConstants.setBold(s,
true);
208 s = doc.addStyle(
"errorheading", regular);
209 StyleConstants.setFontSize(s, 16);
210 StyleConstants.setBold(s,
true);
211 StyleConstants.setForeground(s, Color.red);
213 s = doc.addStyle(
"error", regular);
214 StyleConstants.setBold(s,
true);
215 StyleConstants.setForeground(s, Color.red);
217 s = doc.addStyle(
"warningheading", regular);
218 StyleConstants.setFontSize(s, 16);
219 StyleConstants.setBold(s,
true);
220 StyleConstants.setForeground(s, Color.BLUE);
222 s = doc.addStyle(
"warning", regular);
223 StyleConstants.setBold(s,
true);
224 StyleConstants.setForeground(s, Color.BLUE);