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