package com.kreative.paint.datatransfer; import java.awt.Image; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.io.File; import java.util.Collection; import java.util.Vector; import com.kreative.paint.document.draw.DrawObject; public class ClipboardUtilities implements ClipboardOwner { private static final ClipboardUtilities self = new ClipboardUtilities(); private ClipboardUtilities() {} public void lostOwnership(Clipboard clipboard, Transferable contents) {} public static void setClipboard(Transferable t) { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(t, self); } public static void setClipboardString(String s) { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(new StringSelection(s), self); } public static void setClipboardImage(Image i) { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(new ImageSelection(i), self); } public static void setClipboardFile(File f) { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(new FileListSelection(f), self); } public static void setClipboardFiles(Collection<File> f) { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(new FileListSelection(f), self); } public static void setClipboardDrawObject(DrawObject d) { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(new DrawObjectSelection(d), self); } public static void setClipboardDrawObjects(Collection<? extends DrawObject> d) { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); cb.setContents(new DrawObjectSelection(d), self); } public static boolean clipboardHasString() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); return (cb.isDataFlavorAvailable(DataFlavor.stringFlavor)); } public static boolean clipboardHasImage() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); return (cb.isDataFlavorAvailable(DataFlavor.imageFlavor)); } public static boolean clipboardHasFiles() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); return (cb.isDataFlavorAvailable(DataFlavor.javaFileListFlavor)); } public static boolean clipboardHasDrawObjects() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); return (cb.isDataFlavorAvailable(DrawObjectSelection.drawObjectFlavor)); } public static Transferable getClipboard() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); return cb.getContents(null); } public static String getClipboardString() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); if (cb.isDataFlavorAvailable(DataFlavor.stringFlavor)) { try { return (String)cb.getData(DataFlavor.stringFlavor); } catch (Exception e) { e.printStackTrace(); return null; } } else { return null; } } public static Image getClipboardImage() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); if (cb.isDataFlavorAvailable(DataFlavor.imageFlavor)) { try { return (Image)cb.getData(DataFlavor.imageFlavor); } catch (Exception e) { e.printStackTrace(); return null; } } else { return null; } } public static Collection<File> getClipboardFiles() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); if (cb.isDataFlavorAvailable(DataFlavor.javaFileListFlavor)) { try { Collection<File> v = new Vector<File>(); Collection<?> c = (Collection<?>)cb.getData(DataFlavor.javaFileListFlavor); for (Object o : c) v.add((File)o); return v; } catch (Exception e) { e.printStackTrace(); return null; } } else { return null; } } public static Collection<DrawObject> getClipboardDrawObjects() { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); if (cb.isDataFlavorAvailable(DrawObjectSelection.drawObjectFlavor)) { try { Collection<DrawObject> v = new Vector<DrawObject>(); Collection<?> c = (Collection<?>)cb.getData(DrawObjectSelection.drawObjectFlavor); for (Object o : c) v.add((DrawObject)o); return v; } catch (Exception e) { e.printStackTrace(); return null; } } else { return null; } } }