systemflavormap.java
来自「linux下建立JAVA虚拟机的源码KAFFE」· Java 代码 · 共 430 行 · 第 1/2 页
JAVA
430 行
} /** * Decodes a <code>String</code> native for use as a Java MIME type. * * @param name the <code>String</code> to decode * @return the decoded Java MIME type, or <code>null</code> if nat * is not an encoded <code>String</code> native */ public static String decodeJavaMIMEType (String name) { if (isJavaMIMEType(name)) { return name.substring(GNU_JAVA_MIME_PREFIX.length()); } else return null; } /** * Returns the data flavor given the native type name * or null when no such data flavor exists. */ public static DataFlavor decodeDataFlavor (String name) throws ClassNotFoundException { String javaMIMEType = decodeJavaMIMEType (name); if (javaMIMEType != null) return new DataFlavor (javaMIMEType); else return null; } /** * Returns a List of <code>DataFlavors</code> to which the specified * <code>String</code> native can be translated by the data transfer * subsystem. The <code>List</code> will be sorted from best * <code>DataFlavor</code> to worst. That is, the first <code>DataFlavor * </code> will best reflect data in the specified native to a Java * application. * <p> * If the specified native is previously unknown to the data transfer * subsystem, and that native has been properly encoded, then invoking * this method will establish a mapping in both directions between the * specified native and a DataFlavor whose MIME type is a decoded * version of the native. */ public List getFlavorsForNative (String nat) { throw new Error ("Not implemented"); } public List getNativesForFlavor (DataFlavor flav) { throw new Error ("Not implemented"); } /** * Adds a mapping from a single <code>String</code> native to a single * <code>DataFlavor</code>. Unlike <code>getFlavorsForNative</code>, the * mapping will only be established in one direction, and the native will * not be encoded. To establish a two-way mapping, call * <code>addUnencodedNativeForFlavor</code> as well. The new mapping will * be of lower priority than any existing mapping. * This method has no effect if a mapping from the specified * <code>String</code> native to the specified or equal * <code>DataFlavor</code> already exists. * * @param nativeStr the <code>String</code> native key for the mapping * @param flavor the <code>DataFlavor</code> value for the mapping * @throws NullPointerException if nat or flav is <code>null</code> * * @see #addUnencodedNativeForFlavor * @since 1.4 */ public synchronized void addFlavorForUnencodedNative(String nativeStr, DataFlavor flavor) { if ((nativeStr == null) || (flavor == null)) throw new NullPointerException(); List flavors = (List) nativeToFlavorMap.get(nativeStr); if (flavors == null) { flavors = new ArrayList(); nativeToFlavorMap.put(nativeStr, flavors); } else { if (! flavors.contains(flavor)) flavors.add(flavor); } } /** * Adds a mapping from the specified <code>DataFlavor</code> (and all * <code>DataFlavor</code>s equal to the specified <code>DataFlavor</code>) * to the specified <code>String</code> native. * Unlike <code>getNativesForFlavor</code>, the mapping will only be * established in one direction, and the native will not be encoded. To * establish a two-way mapping, call * <code>addFlavorForUnencodedNative</code> as well. The new mapping will * be of lower priority than any existing mapping. * This method has no effect if a mapping from the specified or equal * <code>DataFlavor</code> to the specified <code>String</code> native * already exists. * * @param flavor the <code>DataFlavor</code> key for the mapping * @param nativeStr the <code>String</code> native value for the mapping * @throws NullPointerException if flav or nat is <code>null</code> * * @see #addFlavorForUnencodedNative * @since 1.4 */ public synchronized void addUnencodedNativeForFlavor(DataFlavor flavor, String nativeStr) { if ((nativeStr == null) || (flavor == null)) throw new NullPointerException(); List natives = (List) flavorToNativeMap.get(flavor); if (natives == null) { natives = new ArrayList(); flavorToNativeMap.put(flavor, natives); } else { if (! natives.contains(nativeStr)) natives.add(nativeStr); } } /** * Discards the current mappings for the specified <code>DataFlavor</code> * and all <code>DataFlavor</code>s equal to the specified * <code>DataFlavor</code>, and creates new mappings to the * specified <code>String</code> natives. * Unlike <code>getNativesForFlavor</code>, the mappings will only be * established in one direction, and the natives will not be encoded. To * establish two-way mappings, call <code>setFlavorsForNative</code> * as well. The first native in the array will represent the highest * priority mapping. Subsequent natives will represent mappings of * decreasing priority. * <p> * If the array contains several elements that reference equal * <code>String</code> natives, this method will establish new mappings * for the first of those elements and ignore the rest of them. * <p> * It is recommended that client code not reset mappings established by the * data transfer subsystem. This method should only be used for * application-level mappings. * * @param flavor the <code>DataFlavor</code> key for the mappings * @param natives the <code>String</code> native values for the mappings * @throws NullPointerException if flav or natives is <code>null</code> * or if natives contains <code>null</code> elements * * @see #setFlavorsForNative * @since 1.4 */ public synchronized void setNativesForFlavor(DataFlavor flavor, String[] natives) { if ((natives == null) || (flavor == null)) throw new NullPointerException(); flavorToNativeMap.remove(flavor); for (int i = 0; i < natives.length; i++) { addUnencodedNativeForFlavor(flavor, natives[i]); } } /** * Discards the current mappings for the specified <code>String</code> * native, and creates new mappings to the specified * <code>DataFlavor</code>s. Unlike <code>getFlavorsForNative</code>, the * mappings will only be established in one direction, and the natives need * not be encoded. To establish two-way mappings, call * <code>setNativesForFlavor</code> as well. The first * <code>DataFlavor</code> in the array will represent the highest priority * mapping. Subsequent <code>DataFlavor</code>s will represent mappings of * decreasing priority. * <p> * If the array contains several elements that reference equal * <code>DataFlavor</code>s, this method will establish new mappings * for the first of those elements and ignore the rest of them. * <p> * It is recommended that client code not reset mappings established by the * data transfer subsystem. This method should only be used for * application-level mappings. * * @param nativeStr the <code>String</code> native key for the mappings * @param flavors the <code>DataFlavor</code> values for the mappings * @throws NullPointerException if nat or flavors is <code>null</code> * or if flavors contains <code>null</code> elements * * @see #setNativesForFlavor * @since 1.4 */ public synchronized void setFlavorsForNative(String nativeStr, DataFlavor[] flavors) { if ((nativeStr == null) || (flavors == null)) throw new NullPointerException(); nativeToFlavorMap.remove(nativeStr); for (int i = 0; i < flavors.length; i++) { addFlavorForUnencodedNative(nativeStr, flavors[i]); } }} // class SystemFlavorMap
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?