--- old/test/jdk/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.java 2018-11-26 17:45:17.000000000 -0800 +++ new/test/jdk/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.java 2018-11-26 17:45:17.000000000 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2018, 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 @@ -22,14 +22,13 @@ */ /* - test %W% %E% - @bug 4874070 7146550 + @test + @key headful + @bug 4874070 @summary Tests basic DnD functionality - @author Your Name: Alexey Utkin area=dnd - @run applet ImageDecoratedDnDNegative.html + @run main ImageDecoratedDnDNegative */ -import java.applet.Applet; import java.awt.*; import java.awt.Robot; import java.awt.event.InputEvent; @@ -39,39 +38,26 @@ import java.awt.dnd.DragSource; +/* + "Automatic test.", + "A Frame, which contains a yellow button labeled \"Drag ME!\" and ", + "a red panel, will appear below. ", + "1. The button would be clicked and dragged to the red panel. ", + "2. When the mouse enters the red panel during the drag, the panel ", + "should turn yellow. On the systems that supports pictured drag, ", + "the image under the drag-cursor should appear (ancor is shifted ", + "from top-left corner of the picture inside the picture to 10pt in both dimensions ). ", + "In WIN32 systems the image under cursor would be visible ONLY over ", + "the drop targets with activated extended OLE D\'n\'D support (that are ", + "the desktop and IE ).", + "3. The mouse would be released.", + "The panel should turn red again and a yellow button labeled ", + "\"Drag ME!\" should appear inside the panel. You should be able ", + "to repeat this operation multiple times." + */ +public class ImageDecoratedDnDNegative { -public class ImageDecoratedDnDNegative extends Applet { - //Declare things used in the test, like buttons and labels here - - public void init() { - //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[] instructions = - { - "Automatic test.", - "A Frame, which contains a yellow button labeled \"Drag ME!\" and ", - "a red panel, will appear below. ", - "1. The button would be clicked and dragged to the red panel. ", - "2. When the mouse enters the red panel during the drag, the panel ", - "should turn yellow. On the systems that supports pictured drag, ", - "the image under the drag-cursor should appear (ancor is shifted ", - "from top-left corner of the picture inside the picture to 10pt in both dimensions ). ", - "In WIN32 systems the image under cursor would be visible ONLY over ", - "the drop targets with activated extended OLE D\'n\'D support (that are ", - "the desktop and IE ).", - "3. The mouse would be released.", - "The panel should turn red again and a yellow button labeled ", - "\"Drag ME!\" should appear inside the panel. You should be able ", - "to repeat this operation multiple times." - }; - Sysout.createDialogWithInstructions(instructions); - - }//End init() - - public void moveTo( + public static void moveTo( Robot r, Point b, Point e) @@ -95,7 +81,7 @@ r.delay(5); } - public void start() { + public static void main(final String[] args) { Frame f = new Frame("Use keyboard for DnD change"); Panel mainPanel; Component dragSource, dropTarget; @@ -114,7 +100,8 @@ mainPanel.add(dragSource, "North"); mainPanel.add(dropTarget, "Center"); f.add(mainPanel, BorderLayout.CENTER); - + f.setUndecorated(true); + f.setLocationRelativeTo(null); f.setVisible(true); Point sourcePoint = dragSource.getLocationOnScreen(); @@ -123,6 +110,7 @@ try { Robot robot = new Robot(); + robot.waitForIdle(); robot.mouseMove(sourcePoint.x, sourcePoint.y); Point start = new Point( sourcePoint.x, @@ -155,112 +143,5 @@ e.printStackTrace(); throw new RuntimeException("test failed: drop was not successful with exception " + e); } - }// start() -}// class DnDAcceptanceTest - - -/** - * ************************************************* - * 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. - * ************************************************** - */ -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 - - -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 - +}// class DnDAcceptanceTest