1 /* 2 * Copyright (c) 2014, 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 sun.datatransfer; 27 28 import java.awt.datatransfer.DataFlavor; 29 import java.awt.datatransfer.FlavorMap; 30 import java.util.LinkedHashSet; 31 import java.util.function.Supplier; 32 33 /** 34 * Contains services which desktop provides to the datatransfer system to enrich 35 * it's functionality. 36 * 37 * @author Petr Pchelko 38 * @since 9 39 */ 40 public interface DesktopDatatransferService { 41 42 /** 43 * If desktop is present - invokes a {@code Runnable} on the event dispatch 44 * thread. Otherwise invokes a {@code run()} method directly. 45 * 46 * @param r a {@code Runnable} to invoke 47 */ invokeOnEventThread(Runnable r)48 void invokeOnEventThread(Runnable r); 49 50 /** 51 * Get a platform-dependent default unicode encoding to use in datatransfer 52 * system. 53 * 54 * @return default unicode encoding 55 */ getDefaultUnicodeEncoding()56 String getDefaultUnicodeEncoding(); 57 58 /** 59 * Takes an appropriate {@code FlavorMap} from the desktop. If no 60 * appropriate table is found - uses a provided supplier to instantiate a 61 * table. If the desktop is absent - creates and returns a system singleton. 62 * 63 * @param supplier a constructor that should be used to create a new 64 * instance of the {@code FlavorMap} 65 * @return a {@code FlavorMap} 66 */ getFlavorMap(Supplier<FlavorMap> supplier)67 FlavorMap getFlavorMap(Supplier<FlavorMap> supplier); 68 69 /** 70 * Checks if desktop is present. 71 * 72 * @return {@code true} is the desktop is present 73 */ isDesktopPresent()74 boolean isDesktopPresent(); 75 76 /** 77 * Returns platform-specific mappings for the specified native format. If 78 * there are no platform-specific mappings for this native, the method 79 * returns an empty {@code Set}. 80 * 81 * @param nat a native format to return flavors for 82 * @return set of platform-specific mappings for a native format 83 */ getPlatformMappingsForNative(String nat)84 LinkedHashSet<DataFlavor> getPlatformMappingsForNative(String nat); 85 86 /** 87 * Returns platform-specific mappings for the specified flavor. If there are 88 * no platform-specific mappings for this flavor, the method returns an 89 * empty {@code Set}. 90 * 91 * @param df {@code DataFlavor} to return mappings for 92 * @return set of platform-specific mappings for a {@code DataFlavor} 93 */ getPlatformMappingsForFlavor(DataFlavor df)94 LinkedHashSet<String> getPlatformMappingsForFlavor(DataFlavor df); 95 96 /** 97 * This method is called for text flavor mappings established while parsing 98 * the default flavor mappings file. It stores the "eoln" and "terminators" 99 * parameters which are not officially part of the MIME type. They are MIME 100 * parameters specific to the flavormap.properties file format. 101 */ registerTextFlavorProperties(String nat, String charset, String eoln, String terminators)102 void registerTextFlavorProperties(String nat, String charset, 103 String eoln, String terminators); 104 } 105