jdk/src/solaris/classes/sun/awt/X11/XDataTransferer.java
changeset 23279 16c1ddb7b66a
parent 23260 d68cbf54738f
child 23328 4c53a6ebc779
equal deleted inserted replaced
23278:6369264caa4a 23279:16c1ddb7b66a
    54 
    54 
    55 import sun.awt.datatransfer.DataTransferer;
    55 import sun.awt.datatransfer.DataTransferer;
    56 import sun.awt.datatransfer.ToolkitThreadBlockedHandler;
    56 import sun.awt.datatransfer.ToolkitThreadBlockedHandler;
    57 
    57 
    58 import java.io.ByteArrayOutputStream;
    58 import java.io.ByteArrayOutputStream;
       
    59 import java.util.stream.Stream;
    59 
    60 
    60 /**
    61 /**
    61  * Platform-specific support for the data transfer subsystem.
    62  * Platform-specific support for the data transfer subsystem.
    62  */
    63  */
    63 public class XDataTransferer extends DataTransferer {
    64 public class XDataTransferer extends DataTransferer {
   278 
   279 
   279         BufferedReader reader = null;
   280         BufferedReader reader = null;
   280         try {
   281         try {
   281             reader = new BufferedReader(new InputStreamReader(stream, charset));
   282             reader = new BufferedReader(new InputStreamReader(stream, charset));
   282             String line;
   283             String line;
   283             ArrayList<URI> uriList = new ArrayList<URI>();
   284             ArrayList<URI> uriList = new ArrayList<>();
   284             URI uri;
   285             URI uri;
   285             while ((line = reader.readLine()) != null) {
   286             while ((line = reader.readLine()) != null) {
   286                 try {
   287                 try {
   287                     uri = new URI(line);
   288                     uri = new URI(line);
   288                 } catch (URISyntaxException uriSyntaxException) {
   289                 } catch (URISyntaxException uriSyntaxException) {
   326      * types.
   327      * types.
   327      * To meet this requirement we check if the passed native format constitutes
   328      * To meet this requirement we check if the passed native format constitutes
   328      * a valid MIME and return a list of flavors to which the data in this MIME
   329      * a valid MIME and return a list of flavors to which the data in this MIME
   329      * type can be translated by the Data Transfer subsystem.
   330      * type can be translated by the Data Transfer subsystem.
   330      */
   331      */
   331     public List <DataFlavor> getPlatformMappingsForNative(String nat) {
   332     @Override
   332         List <DataFlavor> flavors = new ArrayList();
   333     public List<DataFlavor> getPlatformMappingsForNative(String nat) {
       
   334         List<DataFlavor> flavors = new ArrayList<>();
   333 
   335 
   334         if (nat == null) {
   336         if (nat == null) {
   335             return flavors;
   337             return flavors;
   336         }
   338         }
   337 
   339 
   387      * types.
   389      * types.
   388      * To meet this requirement we return a list of formats that represent
   390      * To meet this requirement we return a list of formats that represent
   389      * MIME types to which the data in this flavor can be translated by the Data
   391      * MIME types to which the data in this flavor can be translated by the Data
   390      * Transfer subsystem.
   392      * Transfer subsystem.
   391      */
   393      */
   392     public List getPlatformMappingsForFlavor(DataFlavor df) {
   394     @Override
   393         List natives = new ArrayList(1);
   395     public List<String> getPlatformMappingsForFlavor(DataFlavor df) {
       
   396         List<String> natives = new ArrayList<>(1);
   394 
   397 
   395         if (df == null) {
   398         if (df == null) {
   396             return natives;
   399             return natives;
   397         }
   400         }
   398 
   401 
   414         }
   417         }
   415 
   418 
   416         if (DataFlavor.imageFlavor.equals(df)) {
   419         if (DataFlavor.imageFlavor.equals(df)) {
   417             String[] mimeTypes = ImageIO.getWriterMIMETypes();
   420             String[] mimeTypes = ImageIO.getWriterMIMETypes();
   418             if (mimeTypes != null) {
   421             if (mimeTypes != null) {
   419                 for (int i = 0; i < mimeTypes.length; i++) {
   422                 for (String mime : mimeTypes) {
   420                     Iterator writers =
   423                     Iterator<ImageWriter> writers = ImageIO.getImageWritersByMIMEType(mime);
   421                         ImageIO.getImageWritersByMIMEType(mimeTypes[i]);
       
   422 
       
   423                     while (writers.hasNext()) {
   424                     while (writers.hasNext()) {
   424                         ImageWriter imageWriter = (ImageWriter)writers.next();
   425                         ImageWriter imageWriter = writers.next();
   425                         ImageWriterSpi writerSpi =
   426                         ImageWriterSpi writerSpi = imageWriter.getOriginatingProvider();
   426                             imageWriter.getOriginatingProvider();
       
   427 
   427 
   428                         if (writerSpi != null &&
   428                         if (writerSpi != null &&
   429                             writerSpi.canEncodeImage(getDefaultImageTypeSpecifier())) {
   429                                 writerSpi.canEncodeImage(getDefaultImageTypeSpecifier())) {
   430                             natives.add(mimeTypes[i]);
   430                             natives.add(mime);
   431                             break;
   431                             break;
   432                         }
   432                         }
   433                     }
   433                     }
   434                 }
   434                 }
   435             }
   435             }