/* * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package javafx.scene.input; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javafx.scene.image.Image; /** * Data container for {@link Clipboard} data. It can hold multiple data in * several data formats. * @since JavaFX 2.0 */ public class ClipboardContent extends HashMap { /** * Gets whether a plain text String ({@code DataFormat.PLAIN_TEXT}) * has been put to this {@code ClipboardContent}. * @return true if {@code containsKey(DataFormat.PLAIN_TEXT)} * returns true, false otherwise */ public final boolean hasString() { return containsKey(DataFormat.PLAIN_TEXT); } /** * Puts a plain text String into the {@code ClipboardContent}. This is * equivalent to invoking {@code put(DataFormat.PLAIN_TEXT, s)}. * Setting this value to null effectively clears it * from the {@code ClipboardContent}. * @param s The string to place. This may be null. * @return always true (the string is always successfully put) */ public final boolean putString(String s) { if (s == null) { remove(DataFormat.PLAIN_TEXT); } else { put(DataFormat.PLAIN_TEXT, s); } return true; } /** * Gets the plain text String from the {@code ClipboardContent} * which had previously been put. This is equivalent to invoking * {@code get(DataFormat.PLAIN_TEXT)}. If no such entry exists, * null is returned. * @return The String in the {@code ClipboardContent} associated * with {@code DataFormat.PLAIN_TEXT}, or null if there is not one. */ public final String getString() { return (String) get(DataFormat.PLAIN_TEXT); } /** * Gets whether a URL String ({@code DataFormat.URL}) * has been put to this {@code ClipboardContent}. * @return true if {@code containsKey(DataFormat.URL)} * returns true, false otherwise */ public final boolean hasUrl() { return containsKey(DataFormat.URL); } /** * Puts a URL String into the {@code ClipboardContent}. This is * equivalent to invoking {@code put(DataFormat.URL, url)}. * Setting this value to null effectively clears it * from the {@code ClipboardContent}. * @param url The string to place. This may be null. * @return always true (the URL is always successfully put) */ public final boolean putUrl(String url) { if (url == null) { remove(DataFormat.URL); } else { put(DataFormat.URL, url); } return true; } /** * Gets the URL String from the {@code ClipboardContent} * which had previously been put. This is equivalent to invoking * {@code get(DataFormat.URL)}. If no such entry exists, * null is returned. * @return The String in the {@code ClipboardContent} associated * with {@code DataFormat.URL}, or null if there is not one. */ public final String getUrl() { return (String) get(DataFormat.URL); } /** * Gets whether an HTML String ({@code DataFormat.HTML}) * has been put to this {@code ClipboardContent}. * @return true if {@code containsKey(DataFormat.HTML)} * returns true, false otherwise */ public final boolean hasHtml() { return containsKey(DataFormat.HTML); } /** * Puts an HTML String into the {@code ClipboardContent}. This is * equivalent to invoking {@code put(DataFormat.HTML, html)}. * Setting this value to null effectively clears it * from the {@code ClipboardContent}. * @param html The string to place. This may be null. * @return always true (the HTML is always successfully put) */ public final boolean putHtml(String html) { if (html == null) { remove(DataFormat.HTML); } else { put(DataFormat.HTML, html); } return true; } /** * Gets the HTML String from the {@code ClipboardContent} * which had previously been put. This is equivalent to invoking * {@code get(DataFormat.HTML)}. If no such entry exists, * null is returned. * @return The String in the {@code ClipboardContent} associated * with {@code DataFormat.HTML}, or null if there is not one. */ public final String getHtml() { return (String) get(DataFormat.HTML); } /** * Gets whether a RTF String ({@code DataFormat.RTF}) * has been put to this {@code ClipboardContent}. * @return true if {@code containsKey(DataFormat.RTF)} * returns true, false otherwise */ public final boolean hasRtf() { return containsKey(DataFormat.RTF); } /** * Puts a RTF String into the {@code ClipboardContent}. This is * equivalent to invoking {@code put(DataFormat.RTF, rtf)}. * Setting this value to null effectively clears it * from the {@code ClipboardContent}. * @param rtf The string to place. This may be null. * @return always true (the RTF is always successfully put) */ public final boolean putRtf(String rtf) { if (rtf == null) { remove(DataFormat.RTF); } else { put(DataFormat.RTF, rtf); } return true; } /** * Gets the RTF String from the {@code ClipboardContent} * which had previously been put. This is equivalent to invoking * {@code get(DataFormat.RTF)}. If no such entry exists, * null is returned. * @return The String in the {@code ClipboardContent} associated * with {@code DataFormat.RTF}, or null if there is not one. */ public final String getRtf() { return (String) get(DataFormat.RTF); } /** * Gets whether an Image ({@code DataFormat.IMAGE}) * has been put to this {@code ClipboardContent}. * @return true if {@code containsKey(DataFormat.IMAGE)} * returns true, false otherwise */ public final boolean hasImage() { return containsKey(DataFormat.IMAGE); }; /** * Puts an Image into the {@code ClipboardContent}. This is * equivalent to invoking {@code put(DataFormat.IMAGE, i)}. * Setting this value to null effectively clears it * from the {@code ClipboardContent}. When an image is placed * on the clipboard in this manner, an operating system dependent image * is loaded onto the clipboard (such as TIFF on Mac or DIB on Windows). * * @param i The image to place. This may be null. * @return always true (the image is always successfully put) */ public final boolean putImage(Image i) { if (i == null) { remove(DataFormat.IMAGE); } else { put(DataFormat.IMAGE, i); } return true; } /** * Gets the Image from the {@code ClipboardContent} * which had previously been put. This is equivalent to invoking * {@code get(DataFormat.IMAGE)}. If no such entry exists, * null is returned. * @return The Image in the {@code ClipboardContent} associated * with {@code DataFormat.IMAGE}, or null if there is not one. */ public final Image getImage() { return (Image) get(DataFormat.IMAGE); } /** * Gets whether a List of Files ({@code DataFormat.FILES}) * has been put to this {@code ClipboardContent}. * @return true if {@code containsKey(DataFormat.FILES)} * returns true, false otherwise */ public final boolean hasFiles() { return containsKey(DataFormat.FILES); } /** * Puts a List of Files into the {@code ClipboardContent}. This is * equivalent to invoking {@code put(DataFormat.FILES, files)}. * Setting this value to null effectively clears it * from the {@code ClipboardContent}. * * @param files The files to place. This may be null. * @return always true (the files are always successfully put) */ public final boolean putFiles(List files) { if (files == null) { remove(DataFormat.FILES); } else { put(DataFormat.FILES, files); } return true; } /** * Puts a List of Files into the {@code ClipboardContent}, based * on the file path. This is simply a convenience method which constructs * a List of Files and invokes the {@link #putFiles} method. * * @param filePaths The files to place. This may be null. * @return always true (the files are always successfully put) */ public final boolean putFilesByPath(List filePaths) { final List files = new ArrayList(filePaths.size()); for (String path : filePaths) { files.add(new File(path)); } return putFiles(files); } /** * Gets the List of Files from the {@code ClipboardContent} * which had previously been put. This is equivalent to invoking * {@code get(DataFormat.FILES)}. If no such entry exists, * null is returned. * @return The List of Files in the {@code ClipboardContent} associated * with {@code DataFormat.FILES}, or null if there is not one. */ public final List getFiles() { return (List) get(DataFormat.FILES); } }