# HG changeset patch # User serb # Date 1434110470 -10800 # Node ID 3b61ff08431b641c0677d8acc6c835efc18d21e6 # Parent a1c315dd1554cac4460831b3e08693fc46ca510c 7178683: [macosx] The default directory for open dialog is different for FileDialogOpenDirTest.html Reviewed-by: azvegint, ant diff -r a1c315dd1554 -r 3b61ff08431b jdk/test/java/awt/FileDialog/FileDialogOpenDirTest/FileDialogOpenDirTest.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/awt/FileDialog/FileDialogOpenDirTest/FileDialogOpenDirTest.html Fri Jun 12 15:01:10 2015 +0300 @@ -0,0 +1,43 @@ + + + + +
+See the dialog box (usually in upper left corner) for instructions
+ + + + diff -r a1c315dd1554 -r 3b61ff08431b jdk/test/java/awt/FileDialog/FileDialogOpenDirTest/FileDialogOpenDirTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/awt/FileDialog/FileDialogOpenDirTest/FileDialogOpenDirTest.java Fri Jun 12 15:01:10 2015 +0300 @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2004, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + test + @bug 4974135 + @summary FileDialog should open current directory by default. + @author tav@sparc.spb.su area=awt.filedialog + @run applet/manual=yesno FileDialogOpenDirTest.html +*/ + +import java.awt.*; +import java.awt.event.*; +import java.applet.*; + +public class FileDialogOpenDirTest extends Applet { + + public static void main(String[] args) { + Applet a = new FileDialogOpenDirTest(); + a.init(); + a.start(); + } + + public void init() + { + System.setProperty("sun.awt.disableGtkFileDialogs","true"); + //Create instructions for the user here, as well as set up + // the environment -- set the layout manager, add buttons, + // etc. + this.setLayout (new BorderLayout ()); + + String curdir = System.getProperty("user.dir"); + + String[] instructions1 = + { + "After test started you will see 'Test Frame' with a button inside.", + "Click the button to open FileDialog.", + "Verify that the directory opened is current directory, that is:", + curdir, + "If so press PASSED, otherwise FAILED." + }; + + String[] instructions2 = + { + "The test is not applicable for current platform. Press PASSED." + }; + + Sysout.createDialogWithInstructions(Toolkit.getDefaultToolkit().getClass().getName(). + equals("sun.awt.X11.XToolkit") ? + instructions1 : instructions2); + } + + public void start() { + Frame frame = new Frame("Test Frame"); + Button open = new Button("Open File Dialog"); + + open.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + new FileDialog(new Frame()).show(); + } + }); + + frame.setLayout(new FlowLayout()); + frame.add(open); + + int x = 0; + int y = 0; + Component dlg = null; + + if ((dlg = Sysout.getDialog()) != null) { + x = dlg.getBounds().x + dlg.getBounds().width; + y = dlg.getBounds().y; + } + frame.setBounds(x, y, 150, 70); + frame.setVisible(true); + } +} + + +/**************************************************** + 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.setVisible(true); + 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.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 Component getDialog() { + return dialog; + } + +}// 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("Center", messageText); + + pack(); + + setVisible(true); + }// 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" ); + System.out.println(messageIn); + } + +}// TestDialog class