< prev index next >

test/jdk/java/awt/Window/GrabSequence/GrabSequence.java

Print this page


   1 /*
   2  * Copyright (c) 2005, 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  */


  28   @summary  PIT. Choice drop down does not close once it is right clicked to show a popup menu
  29   @author andrei.dmitriev: area=awt.window
  30   @library ../../regtesthelpers
  31   @build Util
  32   @run main GrabSequence
  33 */
  34 
  35 import java.awt.*;
  36 import java.awt.event.*;
  37 import test.java.awt.regtesthelpers.Util;
  38 
  39 public class GrabSequence
  40 {
  41     private static void init()
  42     {
  43         String toolkit = Toolkit.getDefaultToolkit().getClass().getName();
  44         if ( toolkit.equals("sun.awt.motif.MToolkit")){
  45             System.out.println("This test is for XToolkit and WToolkit only. Now using " + toolkit + ". Automatically passed.");
  46             return;
  47         }
  48         Sysout.createDialog();
  49         Frame frame = new Frame("Frame");
  50         frame.setBackground(Color.green);
  51         frame.setForeground(Color.green);
  52         frame.setLayout(new FlowLayout());
  53         Choice ch = new Choice();
  54         ch.setBackground(Color.red);
  55         ch.setForeground(Color.red);
  56         ch.addItem("One");
  57         ch.addItem("Two");
  58         ch.addItem("Three");
  59         ch.addItem("Four");
  60         ch.addItem("Five");
  61         final PopupMenu pm = new PopupMenu();
  62 
  63         MenuItem i1 = new MenuItem("Item1");
  64         MenuItem i2 = new MenuItem("Item2");
  65         MenuItem i3 = new MenuItem("Item3");
  66         pm.add(i1);
  67         pm.add(i2);
  68         pm.add(i3);


 188             if( ! testGeneratedInterrupt ) throw e;
 189 
 190             //reset flag in case hit this code more than once for some reason (just safety)
 191             testGeneratedInterrupt = false;
 192 
 193             if ( theTestPassed == false )
 194             {
 195                 throw new RuntimeException( failureMessage );
 196             }
 197         }
 198 
 199     }//main
 200 
 201     public static synchronized void setTimeoutTo( int seconds )
 202     {
 203         sleepTime = seconds * 1000;
 204     }
 205 
 206     public static synchronized void pass()
 207     {
 208         Sysout.println( "The test passed." );
 209         Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
 210         //first check if this is executing in main thread
 211         if ( mainThread == Thread.currentThread() )
 212         {
 213             //Still in the main thread, so set the flag just for kicks,
 214             // and throw a test passed exception which will be caught
 215             // and end the test.
 216             theTestPassed = true;
 217             throw new TestPassedException();
 218         }
 219         theTestPassed = true;
 220         testGeneratedInterrupt = true;
 221         mainThread.interrupt();
 222     }//pass()
 223 
 224     public static synchronized void fail()
 225     {
 226         //test writer didn't specify why test failed, so give generic
 227         fail( "it just plain failed! :-)" );
 228     }
 229 
 230     public static synchronized void fail( String whyFailed )
 231     {
 232         Sysout.println( "The test failed: " + whyFailed );
 233         Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
 234         //check if this called from main thread
 235         if ( mainThread == Thread.currentThread() )
 236         {
 237             //If main thread, fail now 'cause not sleeping
 238             throw new RuntimeException( whyFailed );
 239         }
 240         theTestPassed = false;
 241         testGeneratedInterrupt = true;
 242         failureMessage = whyFailed;
 243         mainThread.interrupt();
 244     }//fail()
 245 
 246 }// class
 247 
 248 //This exception is used to exit from any level of call nesting
 249 // when it's determined that the test has passed, and immediately
 250 // end the test.
 251 class TestPassedException extends RuntimeException
 252 {
 253 }
 254 
 255 //*********** End Standard Test Machinery Section **********
 256 
 257 
 258 //************ Begin classes defined for the test ****************
 259 
 260 // if want to make listeners, here is the recommended place for them, then instantiate
 261 //  them in init()
 262 
 263 /* Example of a class which may be written as part of a test
 264 class NewClass implements anInterface
 265  {
 266    static int newVar = 0;
 267 
 268    public void eventDispatched(AWTEvent e)
 269     {
 270       //Counting events to see if we get enough
 271       eventCount++;
 272 
 273       if( eventCount == 20 )
 274        {
 275          //got enough events, so pass
 276 
 277          AutomaticMainTest.pass();
 278        }
 279       else if( tries == 20 )
 280        {
 281          //tried too many times without getting enough events so fail
 282 
 283          AutomaticMainTest.fail();
 284        }
 285 
 286     }// eventDispatched()
 287 
 288  }// NewClass class
 289 
 290 */
 291 
 292 
 293 //************** End classes defined for the test *******************
 294 
 295 
 296 
 297 
 298 /****************************************************
 299  Standard Test Machinery
 300  DO NOT modify anything below -- it's a standard
 301   chunk of code whose purpose is to make user
 302   interaction uniform, and thereby make it simpler
 303   to read and understand someone else's test.
 304  ****************************************************/
 305 
 306 /**
 307  This is part of the standard test machinery.
 308  It creates a dialog (with the instructions), and is the interface
 309   for sending text messages to the user.
 310  To print the instructions, send an array of strings to Sysout.createDialog
 311   WithInstructions method.  Put one line of instructions per array entry.
 312  To display a message for the tester to see, simply call Sysout.println
 313   with the string to be displayed.
 314  This mimics System.out.println but works within the test harness as well
 315   as standalone.
 316  */
 317 
 318 class Sysout
 319 {
 320     private static TestDialog dialog;
 321 
 322     public static void createDialogWithInstructions( String[] instructions )
 323     {
 324         dialog = new TestDialog( new Frame(), "Instructions" );
 325         dialog.printInstructions( instructions );
 326         dialog.setVisible(true);
 327         println( "Any messages for the tester will display here." );
 328     }
 329 
 330     public static void createDialog( )
 331     {
 332         dialog = new TestDialog( new Frame(), "Instructions" );
 333         String[] defInstr = { "Instructions will appear here. ", "" } ;
 334         dialog.printInstructions( defInstr );
 335         dialog.setVisible(true);
 336         println( "Any messages for the tester will display here." );
 337     }
 338 
 339 
 340     public static void printInstructions( String[] instructions )
 341     {
 342         dialog.printInstructions( instructions );
 343     }
 344 
 345 
 346     public static void println( String messageIn )
 347     {
 348         dialog.displayMessage( messageIn );
 349         System.out.println(messageIn);
 350     }
 351 
 352 }// Sysout  class
 353 
 354 /**
 355   This is part of the standard test machinery.  It provides a place for the
 356    test instructions to be displayed, and a place for interactive messages
 357    to the user to be displayed.
 358   To have the test instructions displayed, see Sysout.
 359   To have a message to the user be displayed, see Sysout.
 360   Do not call anything in this dialog directly.
 361   */
 362 class TestDialog extends Dialog
 363 {
 364 
 365     TextArea instructionsText;
 366     TextArea messageText;
 367     int maxStringLength = 80;
 368 
 369     //DO NOT call this directly, go through Sysout
 370     public TestDialog( Frame frame, String name )
 371     {
 372         super( frame, name );
 373         int scrollBoth = TextArea.SCROLLBARS_BOTH;
 374         instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
 375         add( "North", instructionsText );
 376 
 377         messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
 378         add("Center", messageText);
 379 
 380         pack();
 381 
 382         setVisible(true);
 383     }// TestDialog()
 384 
 385     //DO NOT call this directly, go through Sysout
 386     public void printInstructions( String[] instructions )
 387     {
 388         //Clear out any current instructions
 389         instructionsText.setText( "" );
 390 
 391         //Go down array of instruction strings
 392 
 393         String printStr, remainingStr;
 394         for( int i=0; i < instructions.length; i++ )
 395         {
 396             //chop up each into pieces maxSringLength long
 397             remainingStr = instructions[ i ];
 398             while( remainingStr.length() > 0 )
 399             {
 400                 //if longer than max then chop off first max chars to print
 401                 if( remainingStr.length() >= maxStringLength )
 402                 {
 403                     //Try to chop on a word boundary
 404                     int posOfSpace = remainingStr.
 405                         lastIndexOf( ' ', maxStringLength - 1 );
 406 
 407                     if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
 408 
 409                     printStr = remainingStr.substring( 0, posOfSpace + 1 );
 410                     remainingStr = remainingStr.substring( posOfSpace + 1 );
 411                 }
 412                 //else just print
 413                 else
 414                 {
 415                     printStr = remainingStr;
 416                     remainingStr = "";
 417                 }
 418 
 419                 instructionsText.append( printStr + "\n" );
 420 
 421             }// while
 422 
 423         }// for
 424 
 425     }//printInstructions()
 426 
 427     //DO NOT call this directly, go through Sysout
 428     public void displayMessage( String messageIn )
 429     {
 430         messageText.append( messageIn + "\n" );
 431         System.out.println(messageIn);
 432     }
 433 
 434 }// TestDialog  class
   1 /*
   2  * Copyright (c) 2005, 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  */


  28   @summary  PIT. Choice drop down does not close once it is right clicked to show a popup menu
  29   @author andrei.dmitriev: area=awt.window
  30   @library ../../regtesthelpers
  31   @build Util
  32   @run main GrabSequence
  33 */
  34 
  35 import java.awt.*;
  36 import java.awt.event.*;
  37 import test.java.awt.regtesthelpers.Util;
  38 
  39 public class GrabSequence
  40 {
  41     private static void init()
  42     {
  43         String toolkit = Toolkit.getDefaultToolkit().getClass().getName();
  44         if ( toolkit.equals("sun.awt.motif.MToolkit")){
  45             System.out.println("This test is for XToolkit and WToolkit only. Now using " + toolkit + ". Automatically passed.");
  46             return;
  47         }

  48         Frame frame = new Frame("Frame");
  49         frame.setBackground(Color.green);
  50         frame.setForeground(Color.green);
  51         frame.setLayout(new FlowLayout());
  52         Choice ch = new Choice();
  53         ch.setBackground(Color.red);
  54         ch.setForeground(Color.red);
  55         ch.addItem("One");
  56         ch.addItem("Two");
  57         ch.addItem("Three");
  58         ch.addItem("Four");
  59         ch.addItem("Five");
  60         final PopupMenu pm = new PopupMenu();
  61 
  62         MenuItem i1 = new MenuItem("Item1");
  63         MenuItem i2 = new MenuItem("Item2");
  64         MenuItem i3 = new MenuItem("Item3");
  65         pm.add(i1);
  66         pm.add(i2);
  67         pm.add(i3);


 187             if( ! testGeneratedInterrupt ) throw e;
 188 
 189             //reset flag in case hit this code more than once for some reason (just safety)
 190             testGeneratedInterrupt = false;
 191 
 192             if ( theTestPassed == false )
 193             {
 194                 throw new RuntimeException( failureMessage );
 195             }
 196         }
 197 
 198     }//main
 199 
 200     public static synchronized void setTimeoutTo( int seconds )
 201     {
 202         sleepTime = seconds * 1000;
 203     }
 204 
 205     public static synchronized void pass()
 206     {
 207         System.out.println( "The test passed." );
 208         System.out.println( "The test is over, hit  Ctl-C to stop Java VM" );
 209         //first check if this is executing in main thread
 210         if ( mainThread == Thread.currentThread() )
 211         {
 212             //Still in the main thread, so set the flag just for kicks,
 213             // and throw a test passed exception which will be caught
 214             // and end the test.
 215             theTestPassed = true;
 216             throw new TestPassedException();
 217         }
 218         theTestPassed = true;
 219         testGeneratedInterrupt = true;
 220         mainThread.interrupt();
 221     }//pass()
 222 
 223     public static synchronized void fail()
 224     {
 225         //test writer didn't specify why test failed, so give generic
 226         fail( "it just plain failed! :-)" );
 227     }
 228 
 229     public static synchronized void fail( String whyFailed )
 230     {
 231         System.out.println( "The test failed: " + whyFailed );
 232         System.out.println( "The test is over, hit  Ctl-C to stop Java VM" );
 233         //check if this called from main thread
 234         if ( mainThread == Thread.currentThread() )
 235         {
 236             //If main thread, fail now 'cause not sleeping
 237             throw new RuntimeException( whyFailed );
 238         }
 239         theTestPassed = false;
 240         testGeneratedInterrupt = true;
 241         failureMessage = whyFailed;
 242         mainThread.interrupt();
 243     }//fail()
 244 
 245 }// class
 246 
 247 //This exception is used to exit from any level of call nesting
 248 // when it's determined that the test has passed, and immediately
 249 // end the test.
 250 class TestPassedException extends RuntimeException
 251 {
 252 }





















































































































































































< prev index next >