< prev index next >
test/java/awt/Modal/InvisibleParentTest/InvisibleParentTest.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 20,235 ****
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
! test
! @bug 6401700 6412803
! @summary Tests that modal dialog is shown on the screen and
! iconified/restored correctly if some of its blocked windows are invisible
! @author artem.ananiev: area=awt.modal
! @run applet/manual=yesno InvisibleParentTest.html
! */
!
! import java.applet.Applet;
! import java.awt.BorderLayout;
! import java.awt.Button;
! import java.awt.Component;
import java.awt.Dialog;
import java.awt.Frame;
! import java.awt.TextArea;
! import java.awt.Window;
!
! public class InvisibleParentTest extends Applet
! {
! public void init()
! {
! setLayout(new BorderLayout());
!
! String[] instructions =
! {
! "If your system is Windows, press PASS button.",
! "When the test starts two windows should appear: frame G1 and",
! " dialog D1. Another one frame F1 should be minimized.",
! " If the dialog is not shown (minimizied), press FAIL button.",
! "Then minimize frame G1 and restore F1. If the dialog D1 is not",
! " restored together with F1, press FAIL, else PASS"
! };
! Sysout.createDialogWithInstructions( instructions );
! }
!
! public void start ()
! {
! Button b;
!
! setSize (200,200);
! setVisible(true);
! validate();
!
! Component c = this;
! while ((c != null) && !(c instanceof Window))
! {
! c = c.getParent();
! }
! if (c != null)
! {
! ((Window)c).setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
}
! Frame f1 = new Frame("F1");
! f1.setBounds(100, 300, 100, 100);
! f1.setVisible(true);
! f1.setExtendedState(Frame.ICONIFIED);
!
! Frame g1 = new Frame("G1");
! g1.setBounds(150, 350, 100, 100);
! g1.setVisible(true);
!
! final Dialog d1 = new Dialog((Frame)null, "D1", Dialog.ModalityType.APPLICATION_MODAL);
! d1.setBounds(200, 400, 100, 100);
! new Thread(new Runnable()
! {
! public void run()
! {
! d1.setVisible(true);
}
- }).start();
}
}
! /****************************************************
! Standard Test Machinery
! DO NOT modify anything below -- it's a standard
! chunk of code whose purpose is to make user
! interaction uniform, and thereby make it simpler
! to read and understand someone else's test.
! ****************************************************/
!
! /**
! This is part of the standard test machinery.
! It creates a dialog (with the instructions), and is the interface
! for sending text messages to the user.
! To print the instructions, send an array of strings to Sysout.createDialog
! WithInstructions method. Put one line of instructions per array entry.
! To display a message for the tester to see, simply call Sysout.println
! with the string to be displayed.
! This mimics System.out.println but works within the test harness as well
! as standalone.
! */
! class Sysout
! {
! private static TestDialog dialog;
! public static void createDialogWithInstructions( String[] instructions )
! {
! dialog = new TestDialog( new Frame(), "Instructions" );
! dialog.printInstructions( instructions );
! dialog.setVisible(true);
! println( "Any messages for the tester will display here." );
! }
! public static void createDialog( )
! {
! dialog = new TestDialog( new Frame(), "Instructions" );
! String[] defInstr = { "Instructions will appear here. ", "" } ;
! dialog.printInstructions( defInstr );
! dialog.setVisible(true);
! println( "Any messages for the tester will display here." );
! }
! public static void printInstructions( String[] instructions )
! {
! dialog.printInstructions( instructions );
}
! public static void println( String messageIn )
! {
! dialog.displayMessage( messageIn );
! }
! }// Sysout class
! /**
! This is part of the standard test machinery. It provides a place for the
! test instructions to be displayed, and a place for interactive messages
! to the user to be displayed.
! To have the test instructions displayed, see Sysout.
! To have a message to the user be displayed, see Sysout.
! Do not call anything in this dialog directly.
! */
! class TestDialog extends Dialog
! {
! TextArea instructionsText;
! TextArea messageText;
! int maxStringLength = 80;
! //DO NOT call this directly, go through Sysout
! public TestDialog( Frame frame, String name )
! {
! super( frame, name );
! setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
! int scrollBoth = TextArea.SCROLLBARS_BOTH;
! instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
! add( "North", instructionsText );
! messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
! add("Center", messageText);
! pack();
! setVisible(true);
! }// TestDialog()
! //DO NOT call this directly, go through Sysout
! public void printInstructions( String[] instructions )
! {
! //Clear out any current instructions
! instructionsText.setText( "" );
! //Go down array of instruction strings
! String printStr, remainingStr;
! for( int i=0; i < instructions.length; i++ )
! {
! //chop up each into pieces maxSringLength long
! remainingStr = instructions[ i ];
! while( remainingStr.length() > 0 )
! {
! //if longer than max then chop off first max chars to print
! if( remainingStr.length() >= maxStringLength )
! {
! //Try to chop on a word boundary
! int posOfSpace = remainingStr.
! lastIndexOf( ' ', maxStringLength - 1 );
! if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
! printStr = remainingStr.substring( 0, posOfSpace + 1 );
! remainingStr = remainingStr.substring( posOfSpace + 1 );
}
! //else just print
! else
! {
! printStr = remainingStr;
! remainingStr = "";
}
! instructionsText.append( printStr + "\n" );
! }// while
! }// for
! }//printInstructions()
! //DO NOT call this directly, go through Sysout
! public void displayMessage( String messageIn )
! {
! messageText.append( messageIn + "\n" );
! System.out.println(messageIn);
}
- }// TestDialog class
--- 20,207 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
! * @test
! * @bug 6401700 6412803 8058950
! * @summary Tests that modal dialog is shown on the screen and
! * iconified/restored correctly if some of its blocked windows are invisible
! * @requires (os.family == "linux" | os.family == "solaris")
! * @run main/manual InvisibleParentTest
! */
import java.awt.Dialog;
import java.awt.Frame;
! import java.awt.GridBagConstraints;
! import java.awt.GridBagLayout;
! import java.awt.event.ActionEvent;
! import java.awt.event.ActionListener;
! import java.util.concurrent.CountDownLatch;
! import java.util.concurrent.TimeUnit;
! import javax.swing.BorderFactory;
! import javax.swing.JButton;
! import javax.swing.JFrame;
! import javax.swing.JPanel;
! import javax.swing.JTextArea;
! import javax.swing.SwingUtilities;
!
! public class InvisibleParentTest {
!
! public static void main(String args[]) throws Exception {
! final CountDownLatch latch = new CountDownLatch(1);
! TestUI test = new TestUI(latch);
!
! SwingUtilities.invokeLater(new Runnable() {
! @Override
! public void run() {
! try {
! test.createUI();
! } catch (Exception ex) {
! throw new RuntimeException("Exception while creating test UI");
! }
! }
! });
!
! boolean status = latch.await(5, TimeUnit.MINUTES);
!
! if (!status) {
! System.out.println("Test timed out.");
! }
!
! SwingUtilities.invokeAndWait(new Runnable() {
! @Override
! public void run() {
! try {
! test.disposeUI();
! } catch (Exception ex) {
! throw new RuntimeException("Exception while disposing test UI");
}
+ }
+ });
! if (test.testResult == false) {
! throw new RuntimeException("Test Failed.");
}
}
}
! class TestUI {
! private static JFrame mainFrame;
! private static JPanel mainControlPanel;
! private static JTextArea instructionTextArea;
! private static JPanel resultButtonPanel;
! private static JButton passButton;
! private static JButton failButton;
+ private static GridBagLayout layout;
+ private final CountDownLatch latch;
+ public boolean testResult = false;
! public TestUI(CountDownLatch latch) throws Exception {
! this.latch = latch;
}
+ public final void createUI() throws Exception {
! mainFrame = new JFrame("InvisibleParentTest");
! mainFrame.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
! layout = new GridBagLayout();
! mainControlPanel = new JPanel(layout);
! resultButtonPanel = new JPanel(layout);
! GridBagConstraints gbc = new GridBagConstraints();
! // Create Test instructions
! String instructions
! = "When the test starts two windows should appear: frame G1 and\n"
! + " dialog D1. Another one frame F1 should be minimized.\n"
! + " If the dialog is not shown (minimizied), press FAIL button.\n"
! + "Then minimize frame G1 and restore F1. If the dialog D1 is not\n"
! + " restored together with F1, press FAIL, else PASS";
! instructionTextArea = new JTextArea();
! instructionTextArea.setText(instructions);
! instructionTextArea.setEditable(false);
! instructionTextArea.setBorder(BorderFactory.
! createTitledBorder("Test Instructions"));
! gbc.gridx = 0;
! gbc.gridy = 0;
! gbc.fill = GridBagConstraints.HORIZONTAL;
! mainControlPanel.add(instructionTextArea, gbc);
! // Create resultButtonPanel with Pass, Fail buttons
! passButton = new JButton("Pass");
! passButton.setActionCommand("Pass");
! passButton.addActionListener((ActionEvent e) -> {
! System.out.println("Pass Button pressed!");
! testResult = true;
! latch.countDown();
! });
! failButton = new JButton("Fail");
! failButton.setActionCommand("Fail");
! failButton.addActionListener(new ActionListener() {
! @Override
! public void actionPerformed(ActionEvent e) {
! System.out.println("Fail Button pressed!");
! testResult = false;
! latch.countDown();
! }
! });
! gbc.gridx = 0;
! gbc.gridy = 0;
! resultButtonPanel.add(passButton, gbc);
! gbc.gridx = 1;
! gbc.gridy = 0;
! resultButtonPanel.add(failButton, gbc);
! gbc.gridx = 0;
! gbc.gridy = 1;
! mainControlPanel.add(resultButtonPanel, gbc);
! mainFrame.add(mainControlPanel);
! mainFrame.pack();
! mainFrame.setVisible(true);
!
! // Create AWT frames and modal dialog
! createAWTComponents();
}
!
! public void disposeUI() {
! mainFrame.setVisible(false);
! mainFrame.dispose();
}
! private void createAWTComponents() {
! Frame f1 = new Frame("F1");
! f1.setBounds(100, 300, 100, 100);
! f1.setVisible(true);
! try {
! Thread.sleep(500);
! } catch (Exception ex) {
! }
! f1.setExtendedState(Frame.ICONIFIED);
! Frame g1 = new Frame("G1");
! g1.setBounds(150, 350, 100, 100);
! g1.setVisible(true);
! final Dialog d1 = new Dialog((Frame) null, "D1", Dialog.ModalityType.APPLICATION_MODAL);
! d1.setBounds(200, 400, 100, 100);
! new Thread(new Runnable() {
! public void run() {
! d1.setVisible(true);
! }
! }).start();
}
+ }
< prev index next >