90 "",
91 "TEXT",
92 "BITMAP",
93 "METAFILEPICT",
94 "SYLK",
95 "DIF",
96 "TIFF",
97 "OEM TEXT",
98 "DIB",
99 "PALETTE",
100 "PENDATA",
101 "RIFF",
102 "WAVE",
103 "UNICODE TEXT",
104 "ENHMETAFILE",
105 "HDROP",
106 "LOCALE",
107 "DIBV5"
108 };
109
110 private static final Map predefinedClipboardNameMap;
111 static {
112 Map tempMap = new HashMap(predefinedClipboardNames.length, 1.0f);
113 for (int i = 1; i < predefinedClipboardNames.length; i++) {
114 tempMap.put(predefinedClipboardNames[i], Long.valueOf(i));
115 }
116 predefinedClipboardNameMap = Collections.synchronizedMap(tempMap);
117 }
118
119 /**
120 * from winuser.h
121 */
122 public static final int CF_TEXT = 1;
123 public static final int CF_METAFILEPICT = 3;
124 public static final int CF_DIB = 8;
125 public static final int CF_ENHMETAFILE = 14;
126 public static final int CF_HDROP = 15;
127 public static final int CF_LOCALE = 16;
128
129 public static final long CF_HTML = registerClipboardFormat("HTML Format");
130 public static final long CFSTR_INETURL = registerClipboardFormat("UniformResourceLocator");
131 public static final long CF_PNG = registerClipboardFormat("PNG");
132 public static final long CF_JFIF = registerClipboardFormat("JFIF");
133
134 public static final long CF_FILEGROUPDESCRIPTORW = registerClipboardFormat("FileGroupDescriptorW");
135 public static final long CF_FILEGROUPDESCRIPTORA = registerClipboardFormat("FileGroupDescriptor");
136 //CF_FILECONTENTS supported as mandatory associated clipboard
137
138 private static final Long L_CF_LOCALE = (Long)
139 predefinedClipboardNameMap.get(predefinedClipboardNames[CF_LOCALE]);
140
141 private static final DirectColorModel directColorModel =
142 new DirectColorModel(24,
143 0x00FF0000, /* red mask */
144 0x0000FF00, /* green mask */
145 0x000000FF); /* blue mask */
146
147 private static final int[] bandmasks = new int[] {
148 directColorModel.getRedMask(),
149 directColorModel.getGreenMask(),
150 directColorModel.getBlueMask() };
151
152 /**
153 * Singleton constructor
154 */
155 private WDataTransferer() {
156 }
157
158 private static WDataTransferer transferer;
159
160 public static WDataTransferer getInstanceImpl() {
161 if (transferer == null) {
162 synchronized (WDataTransferer.class) {
163 if (transferer == null) {
164 transferer = new WDataTransferer();
165 }
166 }
167 }
168 return transferer;
169 }
170
171 public SortedMap getFormatsForFlavors(DataFlavor[] flavors, FlavorTable map) {
172 SortedMap retval = super.getFormatsForFlavors(flavors, map);
173
174 // The Win32 native code does not support exporting LOCALE data, nor
175 // should it.
176 retval.remove(L_CF_LOCALE);
177
178 return retval;
179 }
180
181 public String getDefaultUnicodeEncoding() {
182 return "utf-16le";
183 }
184
185 public byte[] translateTransferable(Transferable contents,
186 DataFlavor flavor,
187 long format) throws IOException
188 {
189 byte[] bytes = super.translateTransferable(contents, flavor, format);
190
191 if (format == CF_HTML) {
192 bytes = HTMLCodec.convertToHTMLFormat(bytes);
249 "UTF-8");
250 } catch (UnsupportedFlavorException cannotHappen) {
251 }
252 }
253 return new URL(new String(bytes, charset));
254 }
255
256 return super.translateBytesOrStream(str, bytes, flavor, format,
257 localeTransferable);
258 }
259
260 public boolean isLocaleDependentTextFormat(long format) {
261 return format == CF_TEXT || format == CFSTR_INETURL;
262 }
263
264 public boolean isFileFormat(long format) {
265 return format == CF_HDROP || format == CF_FILEGROUPDESCRIPTORA || format == CF_FILEGROUPDESCRIPTORW;
266 }
267
268 protected Long getFormatForNativeAsLong(String str) {
269 Long format = (Long)predefinedClipboardNameMap.get(str);
270 if (format == null) {
271 format = Long.valueOf(registerClipboardFormat(str));
272 }
273 return format;
274 }
275
276 protected String getNativeForFormat(long format) {
277 return (format < predefinedClipboardNames.length)
278 ? predefinedClipboardNames[(int)format]
279 : getClipboardFormatName(format);
280 }
281
282 private final ToolkitThreadBlockedHandler handler =
283 new WToolkitThreadBlockedHandler();
284
285 public ToolkitThreadBlockedHandler getToolkitThreadBlockedHandler() {
286 return handler;
287 }
288
289 /**
|
90 "",
91 "TEXT",
92 "BITMAP",
93 "METAFILEPICT",
94 "SYLK",
95 "DIF",
96 "TIFF",
97 "OEM TEXT",
98 "DIB",
99 "PALETTE",
100 "PENDATA",
101 "RIFF",
102 "WAVE",
103 "UNICODE TEXT",
104 "ENHMETAFILE",
105 "HDROP",
106 "LOCALE",
107 "DIBV5"
108 };
109
110 private static final Map <String, Long> predefinedClipboardNameMap;
111 static {
112 Map <String,Long> tempMap =
113 new HashMap <> (predefinedClipboardNames.length, 1.0f);
114 for (int i = 1; i < predefinedClipboardNames.length; i++) {
115 tempMap.put(predefinedClipboardNames[i], Long.valueOf(i));
116 }
117 predefinedClipboardNameMap =
118 Collections.synchronizedMap(tempMap);
119 }
120
121 /**
122 * from winuser.h
123 */
124 public static final int CF_TEXT = 1;
125 public static final int CF_METAFILEPICT = 3;
126 public static final int CF_DIB = 8;
127 public static final int CF_ENHMETAFILE = 14;
128 public static final int CF_HDROP = 15;
129 public static final int CF_LOCALE = 16;
130
131 public static final long CF_HTML = registerClipboardFormat("HTML Format");
132 public static final long CFSTR_INETURL = registerClipboardFormat("UniformResourceLocator");
133 public static final long CF_PNG = registerClipboardFormat("PNG");
134 public static final long CF_JFIF = registerClipboardFormat("JFIF");
135
136 public static final long CF_FILEGROUPDESCRIPTORW = registerClipboardFormat("FileGroupDescriptorW");
137 public static final long CF_FILEGROUPDESCRIPTORA = registerClipboardFormat("FileGroupDescriptor");
138 //CF_FILECONTENTS supported as mandatory associated clipboard
139
140 private static final Long L_CF_LOCALE =
141 predefinedClipboardNameMap.get(predefinedClipboardNames[CF_LOCALE]);
142
143 private static final DirectColorModel directColorModel =
144 new DirectColorModel(24,
145 0x00FF0000, /* red mask */
146 0x0000FF00, /* green mask */
147 0x000000FF); /* blue mask */
148
149 private static final int[] bandmasks = new int[] {
150 directColorModel.getRedMask(),
151 directColorModel.getGreenMask(),
152 directColorModel.getBlueMask() };
153
154 /**
155 * Singleton constructor
156 */
157 private WDataTransferer() {
158 }
159
160 private static WDataTransferer transferer;
161
162 public static WDataTransferer getInstanceImpl() {
163 if (transferer == null) {
164 synchronized (WDataTransferer.class) {
165 if (transferer == null) {
166 transferer = new WDataTransferer();
167 }
168 }
169 }
170 return transferer;
171 }
172
173 public SortedMap <Long, DataFlavor> getFormatsForFlavors(
174 DataFlavor[] flavors, FlavorTable map)
175 {
176 SortedMap <Long, DataFlavor> retval =
177 super.getFormatsForFlavors(flavors, map);
178
179 // The Win32 native code does not support exporting LOCALE data, nor
180 // should it.
181 retval.remove(L_CF_LOCALE);
182
183 return retval;
184 }
185
186 public String getDefaultUnicodeEncoding() {
187 return "utf-16le";
188 }
189
190 public byte[] translateTransferable(Transferable contents,
191 DataFlavor flavor,
192 long format) throws IOException
193 {
194 byte[] bytes = super.translateTransferable(contents, flavor, format);
195
196 if (format == CF_HTML) {
197 bytes = HTMLCodec.convertToHTMLFormat(bytes);
254 "UTF-8");
255 } catch (UnsupportedFlavorException cannotHappen) {
256 }
257 }
258 return new URL(new String(bytes, charset));
259 }
260
261 return super.translateBytesOrStream(str, bytes, flavor, format,
262 localeTransferable);
263 }
264
265 public boolean isLocaleDependentTextFormat(long format) {
266 return format == CF_TEXT || format == CFSTR_INETURL;
267 }
268
269 public boolean isFileFormat(long format) {
270 return format == CF_HDROP || format == CF_FILEGROUPDESCRIPTORA || format == CF_FILEGROUPDESCRIPTORW;
271 }
272
273 protected Long getFormatForNativeAsLong(String str) {
274 Long format = predefinedClipboardNameMap.get(str);
275 if (format == null) {
276 format = Long.valueOf(registerClipboardFormat(str));
277 }
278 return format;
279 }
280
281 protected String getNativeForFormat(long format) {
282 return (format < predefinedClipboardNames.length)
283 ? predefinedClipboardNames[(int)format]
284 : getClipboardFormatName(format);
285 }
286
287 private final ToolkitThreadBlockedHandler handler =
288 new WToolkitThreadBlockedHandler();
289
290 public ToolkitThreadBlockedHandler getToolkitThreadBlockedHandler() {
291 return handler;
292 }
293
294 /**
|