Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.datatransfer/share/classes/java/awt/datatransfer/StringSelection.java
41159 views
1
/*
2
* Copyright (c) 1996, 2017, 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. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package java.awt.datatransfer;
27
28
import java.io.IOException;
29
import java.io.StringReader;
30
31
/**
32
* A {@code Transferable} which implements the capability required to transfer a
33
* {@code String}.
34
* <p>
35
* This {@code Transferable} properly supports {@code DataFlavor.stringFlavor}
36
* and all equivalent flavors. Support for {@code DataFlavor.plainTextFlavor}
37
* and all equivalent flavors is <b>deprecated</b>. No other {@code DataFlavor}s
38
* are supported.
39
*
40
* @see DataFlavor#stringFlavor
41
* @see DataFlavor#plainTextFlavor
42
* @since 1.1
43
*/
44
public class StringSelection implements Transferable, ClipboardOwner {
45
46
private static final int STRING = 0;
47
private static final int PLAIN_TEXT = 1;
48
49
@SuppressWarnings("deprecation")
50
private static final DataFlavor[] flavors = {
51
DataFlavor.stringFlavor,
52
DataFlavor.plainTextFlavor // deprecated
53
};
54
55
private String data;
56
57
/**
58
* Creates a {@code Transferable} capable of transferring the specified
59
* {@code String}.
60
*
61
* @param data the string to be transferred
62
*/
63
public StringSelection(String data) {
64
this.data = data;
65
}
66
67
/**
68
* Returns an array of flavors in which this {@code Transferable} can
69
* provide the data. {@code DataFlavor.stringFlavor} is properly supported.
70
* Support for {@code DataFlavor.plainTextFlavor} is <b>deprecated</b>.
71
*
72
* @return an array of length two, whose elements are
73
* {@code DataFlavor.stringFlavor} and
74
* {@code DataFlavor.plainTextFlavor}
75
*/
76
public DataFlavor[] getTransferDataFlavors() {
77
// returning flavors itself would allow client code to modify
78
// our internal behavior
79
return flavors.clone();
80
}
81
82
/**
83
* Returns whether the requested flavor is supported by this
84
* {@code Transferable}.
85
*
86
* @param flavor the requested flavor for the data
87
* @return {@code true} if {@code flavor} is equal to
88
* {@code DataFlavor.stringFlavor} or
89
* {@code DataFlavor.plainTextFlavor}; {@code false} if
90
* {@code flavor} is not one of the above flavors
91
* @throws NullPointerException if {@code flavor} is {@code null}
92
*/
93
public boolean isDataFlavorSupported(DataFlavor flavor) {
94
// JCK Test StringSelection0003: if 'flavor' is null, throw NPE
95
for (int i = 0; i < flavors.length; i++) {
96
if (flavor.equals(flavors[i])) {
97
return true;
98
}
99
}
100
return false;
101
}
102
103
/**
104
* Returns the {@code Transferable}'s data in the requested
105
* {@code DataFlavor} if possible. If the desired flavor is
106
* {@code DataFlavor.stringFlavor}, or an equivalent flavor, the
107
* {@code String} representing the selection is returned. If the desired
108
* flavor is {@code DataFlavor.plainTextFlavor}, or an equivalent flavor, a
109
* {@code Reader} is returned.
110
* <br>
111
* <b>Note:</b> The behavior of this method for
112
* {@code DataFlavor.plainTextFlavor}
113
* and equivalent {@code DataFlavor}s is inconsistent with the definition of
114
* {@code DataFlavor.plainTextFlavor}.
115
*
116
* @param flavor the requested flavor for the data
117
* @return the data in the requested flavor, as outlined above
118
* @throws UnsupportedFlavorException if the requested data flavor is not
119
* equivalent to either {@code DataFlavor.stringFlavor} or
120
* {@code DataFlavor.plainTextFlavor}
121
* @throws IOException if an IOException occurs while retrieving the data.
122
* By default, StringSelection never throws this exception, but a
123
* subclass may.
124
* @throws NullPointerException if {@code flavor} is {@code null}
125
* @see java.io.Reader
126
*/
127
public Object getTransferData(DataFlavor flavor)
128
throws UnsupportedFlavorException, IOException
129
{
130
// JCK Test StringSelection0007: if 'flavor' is null, throw NPE
131
if (flavor.equals(flavors[STRING])) {
132
return (Object)data;
133
} else if (flavor.equals(flavors[PLAIN_TEXT])) {
134
return new StringReader(data == null ? "" : data);
135
} else {
136
throw new UnsupportedFlavorException(flavor);
137
}
138
}
139
140
public void lostOwnership(Clipboard clipboard, Transferable contents) {
141
}
142
}
143
144