< prev index next >

test/java/awt/TextField/ScrollSelectionTest/ScrollSelectionTest.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2010, 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) 1999, 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,214 **** * or visit www.oracle.com if you need additional information or have any * questions. */ /* ! test ! @bug 4118621 ! @summary tests that selected text isn't scrolled when there is enough room. ! @author prs: area=TextField ! @run applet/manual=yesno ScrollSelectionTest.html ! */ ! ! /** ! * ScrollSelectionTest.java ! * ! * summary: tests that selected text isn't scrolled when there is enough room. */ ! ! import java.applet.Applet; import java.awt.Dialog; import java.awt.Frame; ! import java.awt.TextField; import java.awt.TextArea; ! public class ScrollSelectionTest extends Applet ! { ! ! Frame frame = new Frame("ScrollSelectionTest frame"); ! TextField tf = new TextField(40); ! public void init() ! { ! tf.setText("abcdefghijklmnopqrstuvwxyz"); ! frame.add(tf); ! tf.select(0, 20); ! String[] instructions = { ! "INSTRUCTIONS:", "This is a test for a win32 specific problem", "If you see all the letters from 'a' to 'z' and", "letters from 'a' to 't' are selected then test passes.", ! "You may have to activate the frame to see the selection" ! + " highlighted (e.g. by clicking on frame's title)." }; - Sysout.createDialogWithInstructions( instructions ); ! }// init() ! public void start () ! { ! setSize (300,300); ! setVisible(true); ! frame.setVisible(true); ! frame.setBounds (400, 0, 300, 300); ! }// start() ! }// class ScrollSelectionTest ! /**************************************************** ! 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.show(); ! 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.show(); ! 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 ); int scrollBoth = TextArea.SCROLLBARS_BOTH; ! instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth ); ! add( "North", instructionsText ); ! messageText = new TextArea( "", 5, maxStringLength, scrollBoth ); ! add("South", messageText); ! pack(); ! show(); ! }// 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" ); } ! }// TestDialog class --- 20,261 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ /* ! @test ! @bug 4118621 8149636 ! @summary Test the selection scrolling in TextField. ! @run main/manual ScrollSelectionTest */ ! import java.awt.Button; import java.awt.Dialog; + import java.awt.FlowLayout; import java.awt.Frame; ! import java.awt.Panel; import java.awt.TextArea; + import java.awt.TextField; + import java.awt.event.ActionEvent; + import java.awt.event.ActionListener; ! public class ScrollSelectionTest { ! static Frame mainFrame; ! static TextField textField; ! private static void init() throws Exception { ! String[] instructions ! = { ! "INSTRUCTIONS: There are 2 Tests", ! "Test1: Text visibility with Scroll", "This is a test for a win32 specific problem", "If you see all the letters from 'a' to 'z' and", "letters from 'a' to 't' are selected then test passes.", ! "You may have to activate the frame to see the selection", ! "highlighted (e.g. by clicking on frame's title).", ! ".", ! "Test2: Flicker with selection scroll", ! "Mouse press on the TextField text.", ! "Move mouse towards left or right with selecting text.", ! "Move mouse away outside the bounds of TextField.", ! "No flicker should be observed.", }; ! Sysout.createDialog(); ! Sysout.printInstructions(instructions); ! } ! public static void initTestWindow() { ! mainFrame = new Frame("ScrollSelectionTest frame"); ! mainFrame.setBounds(500, 0, 400, 200); ! ! textField = new TextField(40); ! textField.setText("abcdefghijklmnopqrstuvwxyz"); ! mainFrame.add(textField); ! mainFrame.setLayout(new FlowLayout()); ! textField.select(0, 20); ! mainFrame.setVisible(true); ! } ! public static void dispose() { ! Sysout.dispose(); ! mainFrame.dispose(); ! } ! /** ! * *************************************************** ! * Standard Test Machinery Section DO NOT modify anything in this section -- ! * it's a standard chunk of code which has all of the synchronization ! * necessary for the test harness. By keeping it the same in all tests, it ! * is easier to read and understand someone else's test, as well as insuring ! * that all tests behave correctly with the test harness. There is a section ! * following this for test-defined classes ! * **************************************************** ! */ ! private static boolean theTestPassed = false; ! private static boolean testGeneratedInterrupt = false; ! private static String failureMessage = ""; ! private static Thread mainThread = null; ! final private static int sleepTime = 300000; ! ! public static void main(String args[]) throws Exception { ! mainThread = Thread.currentThread(); ! try { ! init(); ! initTestWindow(); ! } catch (Exception e) { ! e.printStackTrace(); ! } ! try { ! mainThread.sleep(sleepTime); ! } catch (InterruptedException e) { ! dispose(); ! if (testGeneratedInterrupt && !theTestPassed) { ! throw new Exception(failureMessage); ! } ! } ! if (!testGeneratedInterrupt) { ! dispose(); ! throw new RuntimeException("Timed out after " + sleepTime / 1000 ! + " seconds"); ! } ! } ! public static synchronized void pass() { ! theTestPassed = true; ! testGeneratedInterrupt = true; ! mainThread.interrupt(); ! } ! public static synchronized void fail(String whyFailed) { ! theTestPassed = false; ! testGeneratedInterrupt = true; ! failureMessage = whyFailed; ! mainThread.interrupt(); ! } ! } + // *********** End Standard Test Machinery Section ********** /** ! * ************************************************** ! * 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; + private static Frame frame; ! public static void createDialog() { ! frame = new Frame(); ! dialog = new TestDialog(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); } ! public static void dispose() { ! dialog.dispose(); ! frame.dispose(); } ! } /** ! * 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 implements ActionListener { TextArea instructionsText; TextArea messageText; int maxStringLength = 80; ! Panel buttonP; ! Button failB; ! Button passB; ! ! // DO NOT call this directly, go through Sysout ! public TestDialog(Frame frame, String name) { ! super(frame, name); int scrollBoth = TextArea.SCROLLBARS_BOTH; ! instructionsText = new TextArea("", 15, maxStringLength, scrollBoth); ! add("North", instructionsText); ! messageText = new TextArea("", 5, maxStringLength, scrollBoth); ! add("Center", messageText); ! buttonP = new Panel(); ! passB = new Button("pass"); ! passB.setActionCommand("pass"); ! passB.addActionListener(this); ! buttonP.add("East", passB); ! ! failB = new Button("Fail"); ! failB.setActionCommand("fail"); ! failB.addActionListener(this); ! buttonP.add("West", failB); ! add("South", buttonP); ! pack(); ! setVisible(true); ! } + // DO NOT call this directly, go through Sysout + public void printInstructions(String[] instructions) { + instructionsText.setText(""); String printStr, remainingStr; ! for (int i = 0; i < instructions.length; i++) { ! remainingStr = instructions[i]; ! while (remainingStr.length() > 0) { ! if (remainingStr.length() >= maxStringLength) { int posOfSpace = remainingStr. ! lastIndexOf(' ', maxStringLength - 1); ! if (posOfSpace <= 0) { ! posOfSpace = maxStringLength - 1; ! } ! printStr = remainingStr.substring(0, posOfSpace + 1); ! remainingStr = remainingStr.substring(posOfSpace + 1); } ! else { printStr = remainingStr; remainingStr = ""; } + instructionsText.append(printStr + "\n"); + } + } + } ! public void displayMessage(String messageIn) { ! messageText.append(messageIn + "\n"); } ! @Override ! public void actionPerformed(ActionEvent e) { ! if (e.getActionCommand().equals("pass")) { ! ScrollSelectionTest.pass(); ! } else { ! ScrollSelectionTest.fail("User Clicked Fail"); ! } ! } ! }
< prev index next >