Skip to content

Commit

Permalink
Backport 581b1e29aebd425bade14d2ee46704a16187df5b
Browse files Browse the repository at this point in the history
  • Loading branch information
duke committed Oct 21, 2024
1 parent 6a3c646 commit 3074d95
Showing 1 changed file with 45 additions and 12 deletions.
57 changes: 45 additions & 12 deletions test/jdk/java/awt/regtesthelpers/PassFailJFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
Expand Down Expand Up @@ -186,7 +187,7 @@ public final class PassFailJFrame {

private static final CountDownLatch latch = new CountDownLatch(1);

private static TimeoutHandler timeoutHandler;
private static TimeoutHandlerPanel timeoutHandlerPanel;

/**
* The description of why the test fails.
Expand Down Expand Up @@ -423,10 +424,8 @@ private static JComponent createInstructionUIPanel(String instructions,
int rows, int columns,
boolean enableScreenCapture) {
JPanel main = new JPanel(new BorderLayout());

JLabel testTimeoutLabel = new JLabel("", JLabel.CENTER);
timeoutHandler = new TimeoutHandler(testTimeoutLabel, testTimeOut);
main.add(testTimeoutLabel, BorderLayout.NORTH);
timeoutHandlerPanel = new TimeoutHandlerPanel(testTimeOut);
main.add(timeoutHandlerPanel, BorderLayout.NORTH);

JTextComponent text = instructions.startsWith("<html>")
? configureHTML(instructions, rows, columns)
Expand All @@ -438,13 +437,13 @@ private static JComponent createInstructionUIPanel(String instructions,
JButton btnPass = new JButton("Pass");
btnPass.addActionListener((e) -> {
latch.countDown();
timeoutHandler.stop();
timeoutHandlerPanel.stop();
});

JButton btnFail = new JButton("Fail");
btnFail.addActionListener((e) -> {
requestFailureReason();
timeoutHandler.stop();
timeoutHandlerPanel.stop();
});

JPanel buttonsPanel = new JPanel();
Expand Down Expand Up @@ -602,17 +601,35 @@ public interface InstructionUI {
}


private static final class TimeoutHandler implements ActionListener {
private final long endTime;
private static final class TimeoutHandlerPanel
extends JPanel
implements ActionListener {

private static final String PAUSE_BUTTON_LABEL = "Pause";
private static final String RESUME_BUTTON_LABEL = "Resume";

private long endTime;
private long pauseTimeLeft;

private final Timer timer;

private final JLabel label;
private final JButton button;

public TimeoutHandler(final JLabel label, final long testTimeOut) {
endTime = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(testTimeOut);
public TimeoutHandlerPanel(final long testTimeOut) {
endTime = System.currentTimeMillis()
+ TimeUnit.MINUTES.toMillis(testTimeOut);

this.label = label;
label = new JLabel("", JLabel.CENTER);
button = new JButton(PAUSE_BUTTON_LABEL);

button.setFocusPainted(false);
button.setFont(new Font(Font.DIALOG, Font.BOLD, 10));
button.addActionListener(e -> pauseToggle());

setLayout(new BorderLayout());
add(label, BorderLayout.CENTER);
add(button, BorderLayout.EAST);

timer = new Timer(1000, this);
timer.start();
Expand Down Expand Up @@ -643,6 +660,22 @@ private void updateTime(final long leftTime) {
hours, minutes, seconds));
}


private void pauseToggle() {
if (timer.isRunning()) {
pauseTimeLeft = endTime - System.currentTimeMillis();
timer.stop();
label.setEnabled(false);
button.setText(RESUME_BUTTON_LABEL);
} else {
endTime = System.currentTimeMillis() + pauseTimeLeft;
updateTime(pauseTimeLeft);
timer.start();
label.setEnabled(true);
button.setText(PAUSE_BUTTON_LABEL);
}
}

public void stop() {
timer.stop();
}
Expand Down

0 comments on commit 3074d95

Please sign in to comment.