From a112fc8bac8ddee87c8555b156519a2785d3223b Mon Sep 17 00:00:00 2001 From: Harshitha Onkar Date: Wed, 20 Mar 2024 18:08:04 +0000 Subject: [PATCH] 8328225: Convert ImageDecoratedDnD.html applet test to main Reviewed-by: dnguyen, aivanov --- .../ImageDecoratedDnD/ImageDecoratedDnD.html | 43 ---- .../ImageDecoratedDnD/ImageDecoratedDnD.java | 220 ++++++------------ 2 files changed, 65 insertions(+), 198 deletions(-) delete mode 100644 test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.html diff --git a/test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.html b/test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.html deleted file mode 100644 index e261df0d6ca..00000000000 --- a/test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - ImageDecoratedDnD - - - -

ImageDecoratedDnD
Bug ID: 4874070

- -

See the dialog box (usually in upper left corner) for instructions

- - - - diff --git a/test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.java b/test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.java index c44b5417b97..60fd8809c3d 100644 --- a/test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.java +++ b/test/jdk/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2024, 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 @@ -21,177 +21,87 @@ * questions. */ -/* - test %W% %E% - @bug 4874070 - @summary Tests basic DnD functionality - @author Your Name: Alexey Utkin area=dnd - @run applet/manual=yesno ImageDecoratedDnD.html -*/ - -import java.applet.Applet; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Frame; +import java.awt.Panel; import java.awt.dnd.DragSource; +/* + * @test + * @bug 4874070 + * @summary Tests CTRL + DnD functionality + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ImageDecoratedDnD + */ +public class ImageDecoratedDnD { + private static final String INSTRUCTIONS = """ + When test runs a Frame which contains a yellow button labeled + "Drag ME!" and a RED Panel will appear. -public class ImageDecoratedDnD extends Applet { - //Declare things used in the test, like buttons and labels here + 1. Click on the button and drag it to the red panel while holding + the "CTRL" key on the keyboard. - 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()); + 2. When the mouse enters the red panel during the drag, the panel + should turn yellow. - String[] instructions = - { - "A Frame, which contains a yellow button labeled \"Drag ME!\" and ", - "a red panel, will appear below. ", - "1. Click on the button and drag 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. Release the mouse button.", - "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); + On systems that supports pictured drag, the image under the + drag-cursor should appear. + "Image under drag-cursor" is a translucent blue rectangle + red + circle and includes an anchor that is shifted from top-left + corner of the picture to inside the picture to 10pt + in both dimensions. - }//End init() + On Windows, the image under the cursor would be visible ONLY over + drop targets with activated extended D'n'D support. + It means the image may not be displayed when dragging over some + windows, this is not an error. + The image should be displayed when dragging over the red/yellow panel. - public void start() { - Frame f = new Frame("Use keyboard for DnD change"); + 3. Release the mouse button. + + 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. + + If above is true press PASS, else press FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(38) + .testUI(ImageDecoratedDnD::createUI) + .build() + .awaitAndCheck(); + } + + public static Frame createUI() { + Frame frame = new Frame("Ctrl + Drag - Image DnD test"); Panel mainPanel; Component dragSource, dropTarget; - f.setBounds(0, 400, 200, 200); - f.setLayout(new BorderLayout()); + frame.setSize(400, 400); + frame.setLayout(new BorderLayout()); mainPanel = new Panel(); mainPanel.setLayout(new BorderLayout()); - mainPanel.setBackground(Color.blue); + mainPanel.setBackground(Color.BLUE); - dropTarget = new DnDTarget(Color.red, Color.yellow); - dragSource = new DnDSource("Drag ME! (" + (DragSource.isDragImageSupported()?"with ":"without") + " image)" ); + dropTarget = new DnDTarget(Color.RED, Color.YELLOW); + dragSource = new DnDSource("Drag ME! (" + + (DragSource.isDragImageSupported() ? "with " : "without") + " image)"); mainPanel.add(dragSource, "North"); mainPanel.add(dropTarget, "Center"); - f.add(mainPanel, BorderLayout.CENTER); - - f.setVisible(true); - }// 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."); + frame.add(mainPanel, BorderLayout.CENTER); + frame.setAlwaysOnTop(true); + return frame; } - - 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 - +}