File: TestClipboard.java

package info (click to toggle)
openjdk-25 25.0.1%2B8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 825,408 kB
  • sloc: java: 5,585,680; cpp: 1,333,948; xml: 1,321,242; ansic: 488,034; asm: 404,003; objc: 21,088; sh: 15,106; javascript: 13,265; python: 8,319; makefile: 2,518; perl: 357; awk: 351; pascal: 103; exp: 83; sed: 72; jsp: 24
file content (113 lines) | stat: -rw-r--r-- 4,037 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
 * Copyright (c) 1999, 2025, 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.
 */

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.Serializable;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/*
 * @test
 * @bug 4139552
 * @summary Checks to see if 'isDataFlavorSupported' throws exception.
 * @library /java/awt/regtesthelpers
 * @build PassFailJFrame
 * @run main/manual TestClipboard
 */

public class TestClipboard {

    public static void main(String[] args) throws Exception {
        final String INSTRUCTIONS = """
                This test has two steps:

                1. you need to place some text onto the system clipboard,
                for example,
                    on Windows, you could highlight some text in notepad, and do a Ctrl-C
                    or select menu Edit->Copy;

                    on Linux or Mac, you can do the same with any Terminal or Console or
                    Text application.

                2. After you copy to system clipboard, press "Click Me" button.

                Test will fail if any exception is thrown.

                Press Pass if you see "Test Passed" in log area.""";

        PassFailJFrame.builder()
                .title("TestClipboard Instruction")
                .instructions(INSTRUCTIONS)
                .columns(45)
                .testUI(TestClipboard::createUI)
                .logArea(4)
                .build()
                .awaitAndCheck();
    }

    private static JFrame createUI() {
        JFrame f = new JFrame("ChildFrameIconTest UI");
        JButton b = new JButton("Click Me");
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    new MyTest();
                } catch (Exception ex) {
                    throw new RuntimeException("Exception Thrown : " + ex);
                }
            }
        });
        f.add(b);
        f.setSize(200, 100);
        return f;
    }

    static class MyFlavor extends Object implements Serializable {
        // Stub class needed in order to define the data flavor type
    }

    static class MyTest {
        public MyTest() throws Exception {
            // Create an arbitrary dataflavor
            DataFlavor myFlavor = new DataFlavor(MyFlavor.class, "TestClipboard");
            // Get the system clipboard
            Clipboard theClipboard =
                    Toolkit.getDefaultToolkit().getSystemClipboard();
            // Get the current contents of the clipboard
            Transferable theTransfer = theClipboard.getContents(this);

            // See if the flavor is supported. This may result in a null
            // pointer exception.
            theTransfer.isDataFlavorSupported(myFlavor);
            PassFailJFrame.log("Test Passed");
        }
    }
}