jdk/test/java/awt/Focus/NonFocusableBlockedOwnerTest/NonFocusableBlockedOwnerTest.java
author yan
Wed, 18 Mar 2015 10:30:22 +0300
changeset 29731 33a67f0e4374
permissions -rw-r--r--
8074807: Fix some tests unnecessary using internal API Reviewed-by: azvegint, alexsch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29731
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     1
/*
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     2
 * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     4
 *
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     7
 * published by the Free Software Foundation.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     8
 *
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    13
 * accompanied this code).
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    14
 *
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    18
 *
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    21
 * questions.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    22
 */
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    23
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    24
/*
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    25
  test
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    26
  @bug       6272324
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    27
  @summary   Modal excluded Window which decorated parent is blocked should be non-focusable.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    28
  @author    anton.tarasov@sun.com: area=awt.focus
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    29
  @run       applet NonFocusableBlockedOwnerTest.html
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    30
*/
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    31
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    32
import java.applet.Applet;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    33
import java.awt.*;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    34
import java.awt.event.*;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    35
import java.lang.reflect.*;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    36
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    37
public class NonFocusableBlockedOwnerTest extends Applet {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    38
    Robot robot;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    39
    Frame frame = new Frame("Modal Blocked Frame");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    40
    Dialog dialog = new Dialog(frame, "Modal Dialog", true);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    41
    Window excluded = new Window(frame);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    42
    Button button = new Button("button");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    43
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    44
    public static void main(String[] args) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    45
        NonFocusableBlockedOwnerTest app = new NonFocusableBlockedOwnerTest();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    46
        app.init();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    47
        app.start();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    48
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    49
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    50
    public void init() {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    51
        try {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    52
            robot = new Robot();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    53
        } catch (AWTException e) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    54
            throw new RuntimeException("Error: unable to create robot", e);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    55
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    56
        // Create instructions for the user here, as well as set up
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    57
        // the environment -- set the layout manager, add buttons,
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    58
        // etc.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    59
        this.setLayout (new BorderLayout ());
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    60
        Sysout.createDialogWithInstructions(new String[]
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    61
            {"This is an AUTOMATIC test", "simply wait until it is done"});
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    62
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    63
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    64
    public void start() {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    65
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    66
        if ("sun.awt.motif.MToolkit".equals(Toolkit.getDefaultToolkit().getClass().getName())) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    67
            Sysout.println("No testing on MToolkit.");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    68
            return;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    69
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    70
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    71
        try {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    72
            EventQueue.invokeLater(new Runnable() {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    73
                public void run() {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    74
                    frame.setSize(300, 200);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    75
                    frame.setVisible(true);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    76
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    77
                    excluded.setSize(300, 200);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    78
                    excluded.setLocation(0, 400);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    79
                    excluded.setModalExclusionType(Dialog.ModalExclusionType.TOOLKIT_EXCLUDE);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    80
                    excluded.setLayout(new FlowLayout());
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    81
                    excluded.add(button);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    82
                    excluded.setVisible(true);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    83
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    84
                    dialog.setSize(200, 100);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    85
                    dialog.setLocation(0, 250);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    86
                    dialog.setVisible(true);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    87
                }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    88
            });
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    89
        } catch (Exception e) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    90
            e.printStackTrace();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    91
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    92
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    93
        waitTillShown(dialog);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    94
        clickOn(button);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    95
        if (frame == KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow()) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    96
            throw new RuntimeException("Test failed!");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    97
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    98
        if (excluded == KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusedWindow()) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
    99
            throw new RuntimeException("Test failed!");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   100
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   101
        if (button == KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   102
            throw new RuntimeException("Test failed!");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   103
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   104
        Sysout.println("Test passed.");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   105
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   106
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   107
    void clickOn(Component c) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   108
        Point p = c.getLocationOnScreen();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   109
        Dimension d = c.getSize();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   110
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   111
        Sysout.println("Clicking " + c);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   112
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   113
        if (c instanceof Frame) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   114
            robot.mouseMove(p.x + (int)(d.getWidth()/2), p.y + ((Frame)c).getInsets().top/2);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   115
        } else {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   116
            robot.mouseMove(p.x + (int)(d.getWidth()/2), p.y + (int)(d.getHeight()/2));
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   117
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   118
        robot.mousePress(InputEvent.BUTTON1_MASK);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   119
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   120
        waitForIdle();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   121
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   122
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   123
    void waitTillShown(Component c) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   124
        while (true) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   125
            try {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   126
                Thread.sleep(100);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   127
                c.getLocationOnScreen();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   128
                break;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   129
            } catch (InterruptedException e) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   130
                throw new RuntimeException(e);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   131
            } catch (IllegalComponentStateException e) {}
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   132
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   133
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   134
    void waitForIdle() {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   135
        try {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   136
            robot.waitForIdle();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   137
            EventQueue.invokeAndWait( new Runnable() {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   138
                    public void run() {} // Dummy implementation
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   139
                });
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   140
        } catch(InterruptedException ie) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   141
            Sysout.println("waitForIdle, non-fatal exception caught:");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   142
            ie.printStackTrace();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   143
        } catch(InvocationTargetException ite) {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   144
            Sysout.println("waitForIdle, non-fatal exception caught:");
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   145
            ite.printStackTrace();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   146
        }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   147
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   148
        // wait longer...
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   149
        robot.delay(200);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   150
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   151
}
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   152
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   153
/****************************************************
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   154
 Standard Test Machinery
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   155
 DO NOT modify anything below -- it's a standard
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   156
  chunk of code whose purpose is to make user
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   157
  interaction uniform, and thereby make it simpler
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   158
  to read and understand someone else's test.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   159
 ****************************************************/
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   160
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   161
/**
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   162
 This is part of the standard test machinery.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   163
 It creates a dialog (with the instructions), and is the interface
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   164
  for sending text messages to the user.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   165
 To print the instructions, send an array of strings to Sysout.createDialog
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   166
  WithInstructions method.  Put one line of instructions per array entry.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   167
 To display a message for the tester to see, simply call Sysout.println
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   168
  with the string to be displayed.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   169
 This mimics System.out.println but works within the test harness as well
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   170
  as standalone.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   171
 */
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   172
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   173
class Sysout
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   174
{
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   175
    static TestDialog dialog;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   176
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   177
    public static void createDialogWithInstructions( String[] instructions )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   178
    {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   179
        dialog = new TestDialog( new Frame(), "Instructions" );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   180
        dialog.printInstructions( instructions );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   181
        dialog.setVisible(true);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   182
        println( "Any messages for the tester will display here." );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   183
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   184
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   185
    public static void createDialog( )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   186
    {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   187
        dialog = new TestDialog( new Frame(), "Instructions" );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   188
        String[] defInstr = { "Instructions will appear here. ", "" } ;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   189
        dialog.printInstructions( defInstr );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   190
        dialog.setVisible(true);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   191
        println( "Any messages for the tester will display here." );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   192
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   193
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   194
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   195
    public static void printInstructions( String[] instructions )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   196
    {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   197
        dialog.printInstructions( instructions );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   198
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   199
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   200
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   201
    public static void println( String messageIn )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   202
    {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   203
        dialog.displayMessage( messageIn );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   204
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   205
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   206
}// Sysout  class
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   207
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   208
/**
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   209
  This is part of the standard test machinery.  It provides a place for the
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   210
   test instructions to be displayed, and a place for interactive messages
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   211
   to the user to be displayed.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   212
  To have the test instructions displayed, see Sysout.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   213
  To have a message to the user be displayed, see Sysout.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   214
  Do not call anything in this dialog directly.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   215
  */
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   216
class TestDialog extends Dialog
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   217
{
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   218
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   219
    TextArea instructionsText;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   220
    TextArea messageText;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   221
    int maxStringLength = 80;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   222
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   223
    //DO NOT call this directly, go through Sysout
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   224
    public TestDialog( Frame frame, String name )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   225
    {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   226
        super( frame, name );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   227
        int scrollBoth = TextArea.SCROLLBARS_BOTH;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   228
        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   229
        add( "North", instructionsText );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   230
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   231
        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   232
        add("Center", messageText);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   233
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   234
        pack();
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   235
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   236
        setVisible(true);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   237
    }// TestDialog()
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   238
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   239
    //DO NOT call this directly, go through Sysout
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   240
    public void printInstructions( String[] instructions )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   241
    {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   242
        //Clear out any current instructions
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   243
        instructionsText.setText( "" );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   244
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   245
        //Go down array of instruction strings
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   246
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   247
        String printStr, remainingStr;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   248
        for( int i=0; i < instructions.length; i++ )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   249
        {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   250
            //chop up each into pieces maxSringLength long
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   251
            remainingStr = instructions[ i ];
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   252
            while( remainingStr.length() > 0 )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   253
            {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   254
                //if longer than max then chop off first max chars to print
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   255
                if( remainingStr.length() >= maxStringLength )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   256
                {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   257
                    //Try to chop on a word boundary
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   258
                    int posOfSpace = remainingStr.
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   259
                        lastIndexOf( ' ', maxStringLength - 1 );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   260
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   261
                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   262
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   263
                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   264
                    remainingStr = remainingStr.substring( posOfSpace + 1 );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   265
                }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   266
                //else just print
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   267
                else
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   268
                {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   269
                    printStr = remainingStr;
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   270
                    remainingStr = "";
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   271
                }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   272
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   273
                instructionsText.append( printStr + "\n" );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   274
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   275
            }// while
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   276
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   277
        }// for
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   278
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   279
    }//printInstructions()
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   280
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   281
    //DO NOT call this directly, go through Sysout
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   282
    public void displayMessage( String messageIn )
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   283
    {
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   284
        messageText.append( messageIn + "\n" );
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   285
        System.out.println(messageIn);
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   286
    }
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   287
33a67f0e4374 8074807: Fix some tests unnecessary using internal API
yan
parents:
diff changeset
   288
}// TestDialog  class