mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-14 00:49:42 +00:00
8294158: HTML formatting for PassFailJFrame instructions
Reviewed-by: azvegint, prr
This commit is contained in:
parent
d2d1592dd9
commit
14090ef603
@ -51,6 +51,7 @@ import javax.swing.JButton;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JEditorPane;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
@ -58,6 +59,9 @@ import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.Timer;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import javax.swing.text.html.HTMLEditorKit;
|
||||
import javax.swing.text.html.StyleSheet;
|
||||
|
||||
import static javax.swing.SwingUtilities.invokeAndWait;
|
||||
import static javax.swing.SwingUtilities.isEventDispatchThread;
|
||||
@ -81,8 +85,11 @@ public class PassFailJFrame {
|
||||
private static volatile boolean failed;
|
||||
private static volatile boolean timeout;
|
||||
private static volatile String testFailedReason;
|
||||
|
||||
private static final AtomicInteger imgCounter = new AtomicInteger(0);
|
||||
|
||||
private static JFrame frame;
|
||||
|
||||
private static Robot robot;
|
||||
|
||||
public enum Position {HORIZONTAL, VERTICAL, TOP_LEFT_CORNER}
|
||||
@ -169,7 +176,7 @@ public class PassFailJFrame {
|
||||
InvocationTargetException {
|
||||
if (isEventDispatchThread()) {
|
||||
createUI(title, instructions, testTimeOut, rows, columns,
|
||||
enableScreenCapture);
|
||||
enableScreenCapture);
|
||||
} else {
|
||||
invokeAndWait(() -> createUI(title, instructions, testTimeOut,
|
||||
rows, columns, enableScreenCapture));
|
||||
@ -187,9 +194,11 @@ public class PassFailJFrame {
|
||||
boolean enableScreenCapture) {
|
||||
frame = new JFrame(title);
|
||||
frame.setLayout(new BorderLayout());
|
||||
JTextArea instructionsText = new JTextArea(instructions, rows, columns);
|
||||
instructionsText.setEditable(false);
|
||||
instructionsText.setLineWrap(true);
|
||||
|
||||
JTextComponent text = instructions.startsWith("<html>")
|
||||
? configureHTML(instructions, rows, columns)
|
||||
: configurePlainText(instructions, rows, columns);
|
||||
text.setEditable(false);
|
||||
|
||||
long tTimeout = TimeUnit.MINUTES.toMillis(testTimeOut);
|
||||
|
||||
@ -210,7 +219,7 @@ public class PassFailJFrame {
|
||||
});
|
||||
timer.start();
|
||||
frame.add(testTimeoutLabel, BorderLayout.NORTH);
|
||||
frame.add(new JScrollPane(instructionsText), BorderLayout.CENTER);
|
||||
frame.add(new JScrollPane(text), BorderLayout.CENTER);
|
||||
|
||||
JButton btnPass = new JButton("Pass");
|
||||
btnPass.addActionListener((e) -> {
|
||||
@ -249,6 +258,32 @@ public class PassFailJFrame {
|
||||
windowList.add(frame);
|
||||
}
|
||||
|
||||
private static JTextComponent configurePlainText(String instructions,
|
||||
int rows, int columns) {
|
||||
JTextArea text = new JTextArea(instructions, rows, columns);
|
||||
text.setLineWrap(true);
|
||||
text.setWrapStyleWord(true);
|
||||
return text;
|
||||
}
|
||||
|
||||
private static JTextComponent configureHTML(String instructions,
|
||||
int rows, int columns) {
|
||||
JEditorPane text = new JEditorPane("text/html", instructions);
|
||||
text.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES,
|
||||
Boolean.TRUE);
|
||||
// Set preferred size as if it were JTextArea
|
||||
text.setPreferredSize(new JTextArea(rows, columns).getPreferredSize());
|
||||
|
||||
HTMLEditorKit kit = (HTMLEditorKit) text.getEditorKit();
|
||||
StyleSheet styles = kit.getStyleSheet();
|
||||
// Reduce the default margins
|
||||
styles.addRule("ol, ul { margin-left-ltr: 20; margin-left-rtl: 20 }");
|
||||
// Make the size of code blocks the same as other text
|
||||
styles.addRule("code { font-size: inherit }");
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
private static JComponent createCapturePanel() {
|
||||
JComboBox<CaptureType> screenShortType = new JComboBox<>(CaptureType.values());
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user