src/windows/classes/sun/awt/windows/WDataTransferer.java

Print this page




  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    /**