1 /*
2  * Copyright (c) 2009, 2013, 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  */
23
24/*
25  test
26  @bug 6242241
27  @summary Tests basic DnD functionality in an applet
28  @requires (os.family == "windows")
29  @author Your Name: Alexey Utkin area=dnd
30  @run applet/manual=yesno DnDFileGroupDescriptor.html
31*/
32
33import java.applet.Applet;
34import java.awt.*;
35
36public class DnDFileGroupDescriptor extends Applet {
37    public void init() {
38        setLayout(new BorderLayout());
39
40        String[] instructions = {
41         "The applet window contains a red field.",
42         "1. Start MS Outlook program. Find and open ",
43         "   the mail form with attachments.",
44         "2. Select attachments from the mail and drag into a red field of applet.",
45         "   When the mouse enters the field during the drag, the application ",
46         "   should change the cursor form to OLE-copy and field color to yellow.",
47         "3. Release the mouse button (drop attachments) over the field.",
48         "",
49         "File paths in temporary folder should appear.",
50         "",
51         "You should be able to repeat this operation multiple times.",
52         "Please, select \"Pass\" just in case of success or \"Fail\" for another."
53        };
54        Sysout.createDialogWithInstructions( instructions );
55    }
56
57    public void start() {
58        Panel   mainPanel;
59        Component dropTarget;
60
61        mainPanel = new Panel();
62        mainPanel.setLayout(new BorderLayout());
63
64        mainPanel.setBackground(Color.blue);
65        dropTarget = new DnDTarget(Color.red, Color.yellow);
66
67        mainPanel.add(dropTarget, "Center");
68        add(mainPanel);
69
70        setSize(200,200);
71    }
72}
73
74/****************************************************
75 Standard Test Machinery
76 DO NOT modify anything below -- it's a standard
77  chunk of code whose purpose is to make user
78  interaction uniform, and thereby make it simpler
79  to read and understand someone else's test.
80 ****************************************************/
81
82class Sysout
83 {
84   private static TestDialog dialog;
85
86   public static void createDialogWithInstructions( String[] instructions )
87    {
88      dialog = new TestDialog( new Frame(), "Instructions" );
89      dialog.printInstructions( instructions );
90      dialog.show();
91      println( "Any messages for the tester will display here." );
92    }
93
94   public static void createDialog( )
95    {
96      dialog = new TestDialog( new Frame(), "Instructions" );
97      String[] defInstr = { "Instructions will appear here. ", "" } ;
98      dialog.printInstructions( defInstr );
99      dialog.show();
100      println( "Any messages for the tester will display here." );
101    }
102
103
104   public static void printInstructions( String[] instructions )
105    {
106      dialog.printInstructions( instructions );
107    }
108
109
110   public static void println( String messageIn )
111    {
112      dialog.displayMessage( messageIn );
113    }
114
115 }// Sysout  class
116
117class TestDialog extends Dialog
118 {
119
120   TextArea instructionsText;
121   TextArea messageText;
122   int maxStringLength = 80;
123
124   //DO NOT call this directly, go through Sysout
125   public TestDialog( Frame frame, String name )
126    {
127      super( frame, name );
128      int scrollBoth = TextArea.SCROLLBARS_BOTH;
129      instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
130      add( "North", instructionsText );
131
132      messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
133      add("South", messageText);
134
135      pack();
136
137      show();
138    }// TestDialog()
139
140   //DO NOT call this directly, go through Sysout
141   public void printInstructions( String[] instructions )
142    {
143      //Clear out any current instructions
144      instructionsText.setText( "" );
145
146      //Go down array of instruction strings
147
148      String printStr, remainingStr;
149      for( int i=0; i < instructions.length; i++ )
150       {
151         //chop up each into pieces maxSringLength long
152         remainingStr = instructions[ i ];
153         while( remainingStr.length() > 0 )
154          {
155            //if longer than max then chop off first max chars to print
156            if( remainingStr.length() >= maxStringLength )
157             {
158               //Try to chop on a word boundary
159               int posOfSpace = remainingStr.
160                  lastIndexOf( ' ', maxStringLength - 1 );
161
162               if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
163
164               printStr = remainingStr.substring( 0, posOfSpace + 1 );
165               remainingStr = remainingStr.substring( posOfSpace + 1 );
166             }
167            //else just print
168            else
169             {
170               printStr = remainingStr;
171               remainingStr = "";
172             }
173
174            instructionsText.append( printStr + "\n" );
175
176          }// while
177
178       }// for
179
180    }//printInstructions()
181
182   //DO NOT call this directly, go through Sysout
183   public void displayMessage( String messageIn )
184    {
185      messageText.append( messageIn + "\n" );
186    }
187
188 }// TestDialog  class
189