< prev index next >

test/jdk/java/awt/Mixing/setComponentZOrder.java

Print this page


   1 /*
   2  * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */


  31 */
  32 
  33 /**
  34  * setComponentZOrder.java
  35  *
  36  * summary:  Mixing code should correctly handle insertion of components with setComponentZOrder.
  37  */
  38 
  39 import java.awt.*;
  40 import java.awt.event.*;
  41 
  42 
  43 public class setComponentZOrder
  44 {
  45 
  46     //*** test-writer defined static variables go here ***
  47 
  48 
  49     private static void init()
  50     {
  51         //*** Create instructions for the user here ***
  52 
  53         String[] instructions =
  54         {
  55             "This is an AUTOMATIC test, simply wait until it is done.",
  56             "The result (passed or failed) will be shown in the",
  57             "message window below."
  58         };
  59         Sysout.createDialog( );
  60         Sysout.printInstructions( instructions );
  61 
  62         try {
  63             Container c = new Container();
  64             Button b = new Button("b");
  65             c.setComponentZOrder(b, 0);
  66         } catch (ArrayIndexOutOfBoundsException e) {
  67             e.printStackTrace();
  68             fail("The setComponentZOrder method used to insert a component caused the mixing code to throw the exception: " + e);
  69         }
  70 
  71         pass();
  72 
  73     }//End  init()
  74 
  75 
  76 
  77     /*****************************************************
  78      * Standard Test Machinery Section
  79      * DO NOT modify anything in this section -- it's a
  80      * standard chunk of code which has all of the
  81      * synchronisation necessary for the test harness.


 130             if( ! testGeneratedInterrupt ) throw e;
 131 
 132             //reset flag in case hit this code more than once for some reason (just safety)
 133             testGeneratedInterrupt = false;
 134 
 135             if ( theTestPassed == false )
 136             {
 137                 throw new RuntimeException( failureMessage );
 138             }
 139         }
 140 
 141     }//main
 142 
 143     public static synchronized void setTimeoutTo( int seconds )
 144     {
 145         sleepTime = seconds * 1000;
 146     }
 147 
 148     public static synchronized void pass()
 149     {
 150         Sysout.println( "The test passed." );
 151         Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
 152         //first check if this is executing in main thread
 153         if ( mainThread == Thread.currentThread() )
 154         {
 155             //Still in the main thread, so set the flag just for kicks,
 156             // and throw a test passed exception which will be caught
 157             // and end the test.
 158             theTestPassed = true;
 159             throw new TestPassedException();
 160         }
 161         theTestPassed = true;
 162         testGeneratedInterrupt = true;
 163         mainThread.interrupt();
 164     }//pass()
 165 
 166     public static synchronized void fail()
 167     {
 168         //test writer didn't specify why test failed, so give generic
 169         fail( "it just plain failed! :-)" );
 170     }
 171 
 172     public static synchronized void fail( String whyFailed )
 173     {
 174         Sysout.println( "The test failed: " + whyFailed );
 175         Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
 176         //check if this called from main thread
 177         if ( mainThread == Thread.currentThread() )
 178         {
 179             //If main thread, fail now 'cause not sleeping
 180             throw new RuntimeException( whyFailed );
 181         }
 182         theTestPassed = false;
 183         testGeneratedInterrupt = true;
 184         failureMessage = whyFailed;
 185         mainThread.interrupt();
 186     }//fail()
 187 
 188 }// class setComponentZOrder
 189 
 190 //This exception is used to exit from any level of call nesting
 191 // when it's determined that the test has passed, and immediately
 192 // end the test.
 193 class TestPassedException extends RuntimeException
 194 {
 195 }
 196 
 197 //*********** End Standard Test Machinery Section **********
 198 
 199 
 200 //************ Begin classes defined for the test ****************
 201 
 202 // if want to make listeners, here is the recommended place for them, then instantiate
 203 //  them in init()
 204 
 205 /* Example of a class which may be written as part of a test
 206 class NewClass implements anInterface
 207  {
 208    static int newVar = 0;
 209 
 210    public void eventDispatched(AWTEvent e)
 211     {
 212       //Counting events to see if we get enough
 213       eventCount++;
 214 
 215       if( eventCount == 20 )
 216        {
 217          //got enough events, so pass
 218 
 219          setComponentZOrder.pass();
 220        }
 221       else if( tries == 20 )
 222        {
 223          //tried too many times without getting enough events so fail
 224 
 225          setComponentZOrder.fail();
 226        }
 227 
 228     }// eventDispatched()
 229 
 230  }// NewClass class
 231 
 232 */
 233 
 234 
 235 //************** End classes defined for the test *******************
 236 
 237 
 238 
 239 
 240 /****************************************************
 241  Standard Test Machinery
 242  DO NOT modify anything below -- it's a standard
 243   chunk of code whose purpose is to make user
 244   interaction uniform, and thereby make it simpler
 245   to read and understand someone else's test.
 246  ****************************************************/
 247 
 248 /**
 249  This is part of the standard test machinery.
 250  It creates a dialog (with the instructions), and is the interface
 251   for sending text messages to the user.
 252  To print the instructions, send an array of strings to Sysout.createDialog
 253   WithInstructions method.  Put one line of instructions per array entry.
 254  To display a message for the tester to see, simply call Sysout.println
 255   with the string to be displayed.
 256  This mimics System.out.println but works within the test harness as well
 257   as standalone.
 258  */
 259 
 260 class Sysout
 261 {
 262     private static TestDialog dialog;
 263 
 264     public static void createDialogWithInstructions( String[] instructions )
 265     {
 266         dialog = new TestDialog( new Frame(), "Instructions" );
 267         dialog.printInstructions( instructions );
 268         dialog.setVisible(true);
 269         println( "Any messages for the tester will display here." );
 270     }
 271 
 272     public static void createDialog( )
 273     {
 274         dialog = new TestDialog( new Frame(), "Instructions" );
 275         String[] defInstr = { "Instructions will appear here. ", "" } ;
 276         dialog.printInstructions( defInstr );
 277         dialog.setVisible(true);
 278         println( "Any messages for the tester will display here." );
 279     }
 280 
 281 
 282     public static void printInstructions( String[] instructions )
 283     {
 284         dialog.printInstructions( instructions );
 285     }
 286 
 287 
 288     public static void println( String messageIn )
 289     {
 290         dialog.displayMessage( messageIn );
 291         System.out.println(messageIn);
 292     }
 293 
 294 }// Sysout  class
 295 
 296 /**
 297   This is part of the standard test machinery.  It provides a place for the
 298    test instructions to be displayed, and a place for interactive messages
 299    to the user to be displayed.
 300   To have the test instructions displayed, see Sysout.
 301   To have a message to the user be displayed, see Sysout.
 302   Do not call anything in this dialog directly.
 303   */
 304 class TestDialog extends Dialog
 305 {
 306 
 307     TextArea instructionsText;
 308     TextArea messageText;
 309     int maxStringLength = 80;
 310 
 311     //DO NOT call this directly, go through Sysout
 312     public TestDialog( Frame frame, String name )
 313     {
 314         super( frame, name );
 315         int scrollBoth = TextArea.SCROLLBARS_BOTH;
 316         instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
 317         add( "North", instructionsText );
 318 
 319         messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
 320         add("Center", messageText);
 321 
 322         pack();
 323 
 324         setVisible(true);
 325     }// TestDialog()
 326 
 327     //DO NOT call this directly, go through Sysout
 328     public void printInstructions( String[] instructions )
 329     {
 330         //Clear out any current instructions
 331         instructionsText.setText( "" );
 332 
 333         //Go down array of instruction strings
 334 
 335         String printStr, remainingStr;
 336         for( int i=0; i < instructions.length; i++ )
 337         {
 338             //chop up each into pieces maxSringLength long
 339             remainingStr = instructions[ i ];
 340             while( remainingStr.length() > 0 )
 341             {
 342                 //if longer than max then chop off first max chars to print
 343                 if( remainingStr.length() >= maxStringLength )
 344                 {
 345                     //Try to chop on a word boundary
 346                     int posOfSpace = remainingStr.
 347                         lastIndexOf( ' ', maxStringLength - 1 );
 348 
 349                     if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
 350 
 351                     printStr = remainingStr.substring( 0, posOfSpace + 1 );
 352                     remainingStr = remainingStr.substring( posOfSpace + 1 );
 353                 }
 354                 //else just print
 355                 else
 356                 {
 357                     printStr = remainingStr;
 358                     remainingStr = "";
 359                 }
 360 
 361                 instructionsText.append( printStr + "\n" );
 362 
 363             }// while
 364 
 365         }// for
 366 
 367     }//printInstructions()
 368 
 369     //DO NOT call this directly, go through Sysout
 370     public void displayMessage( String messageIn )
 371     {
 372         messageText.append( messageIn + "\n" );
 373         System.out.println(messageIn);
 374     }
 375 
 376 }// TestDialog  class
   1 /*
   2  * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */


  31 */
  32 
  33 /**
  34  * setComponentZOrder.java
  35  *
  36  * summary:  Mixing code should correctly handle insertion of components with setComponentZOrder.
  37  */
  38 
  39 import java.awt.*;
  40 import java.awt.event.*;
  41 
  42 
  43 public class setComponentZOrder
  44 {
  45 
  46     //*** test-writer defined static variables go here ***
  47 
  48 
  49     private static void init()
  50     {











  51         try {
  52             Container c = new Container();
  53             Button b = new Button("b");
  54             c.setComponentZOrder(b, 0);
  55         } catch (ArrayIndexOutOfBoundsException e) {
  56             e.printStackTrace();
  57             fail("The setComponentZOrder method used to insert a component caused the mixing code to throw the exception: " + e);
  58         }
  59 
  60         pass();
  61 
  62     }//End  init()
  63 
  64 
  65 
  66     /*****************************************************
  67      * Standard Test Machinery Section
  68      * DO NOT modify anything in this section -- it's a
  69      * standard chunk of code which has all of the
  70      * synchronisation necessary for the test harness.


 119             if( ! testGeneratedInterrupt ) throw e;
 120 
 121             //reset flag in case hit this code more than once for some reason (just safety)
 122             testGeneratedInterrupt = false;
 123 
 124             if ( theTestPassed == false )
 125             {
 126                 throw new RuntimeException( failureMessage );
 127             }
 128         }
 129 
 130     }//main
 131 
 132     public static synchronized void setTimeoutTo( int seconds )
 133     {
 134         sleepTime = seconds * 1000;
 135     }
 136 
 137     public static synchronized void pass()
 138     {
 139         System.out.println( "The test passed." );
 140         System.out.println( "The test is over, hit  Ctl-C to stop Java VM" );
 141         //first check if this is executing in main thread
 142         if ( mainThread == Thread.currentThread() )
 143         {
 144             //Still in the main thread, so set the flag just for kicks,
 145             // and throw a test passed exception which will be caught
 146             // and end the test.
 147             theTestPassed = true;
 148             throw new TestPassedException();
 149         }
 150         theTestPassed = true;
 151         testGeneratedInterrupt = true;
 152         mainThread.interrupt();
 153     }//pass()
 154 
 155     public static synchronized void fail()
 156     {
 157         //test writer didn't specify why test failed, so give generic
 158         fail( "it just plain failed! :-)" );
 159     }
 160 
 161     public static synchronized void fail( String whyFailed )
 162     {
 163         System.out.println( "The test failed: " + whyFailed );
 164         System.out.println( "The test is over, hit  Ctl-C to stop Java VM" );
 165         //check if this called from main thread
 166         if ( mainThread == Thread.currentThread() )
 167         {
 168             //If main thread, fail now 'cause not sleeping
 169             throw new RuntimeException( whyFailed );
 170         }
 171         theTestPassed = false;
 172         testGeneratedInterrupt = true;
 173         failureMessage = whyFailed;
 174         mainThread.interrupt();
 175     }//fail()
 176 
 177 }// class setComponentZOrder
 178 
 179 //This exception is used to exit from any level of call nesting
 180 // when it's determined that the test has passed, and immediately
 181 // end the test.
 182 class TestPassedException extends RuntimeException
 183 {
 184 }





















































































































































































< prev index next >