home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.macos;
-
- import java.awt.datatransfer.Clipboard;
- import java.awt.datatransfer.ClipboardOwner;
- import java.awt.datatransfer.DataFlavor;
- import java.awt.datatransfer.Transferable;
- import java.awt.datatransfer.UnsupportedFlavorException;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.StringBufferInputStream;
-
- public class MacClipboard extends Clipboard {
- static final String TEXT_RESTYPE = "TEXT";
- static final String OBJECT_RESTYPE = "JSOB";
-
- public MacClipboard(String var1) {
- super(var1);
- }
-
- public synchronized Transferable getContents(Object var1) {
- MacClipboardContents var2 = new MacClipboardContents();
- String[] var3 = getScrapTypes();
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- String var5 = var3[var4];
- if (var5.equals("TEXT")) {
- String var6 = getStringFromScrap("TEXT");
- var2.addTransferData(DataFlavor.stringFlavor, var6);
- var2.addTransferData(DataFlavor.plainTextFlavor, new StringBufferInputStream(var6));
- } else if (var5.equals("JSOB")) {
- try {
- byte[] var10 = getBytesFromScrap("JSOB");
- ByteArrayInputStream var8 = new ByteArrayInputStream(var10);
- ObjectInputStream var9 = new ObjectInputStream(var8);
- Object var13 = var9.readObject();
- DataFlavor var7 = new DataFlavor(var13.getClass(), var13.getClass().getName());
- var2.addTransferData(var7, var13);
- } catch (IOException var11) {
- System.err.println("IOException in MacClipboard: " + var11);
- } catch (ClassNotFoundException var12) {
- System.err.println("ClassNotFoundException in MacClipboard: " + var12);
- }
- }
- }
-
- return var2;
- }
-
- public synchronized void setContents(Transferable var1, ClipboardOwner var2) {
- if (super.owner != null && super.owner != var2) {
- super.owner.lostOwnership(this, super.contents);
- }
-
- super.owner = var2;
- super.contents = var1;
- DataFlavor[] var3 = var1.getTransferDataFlavors();
- boolean var4 = true;
-
- for(int var5 = 0; var5 < var3.length; ++var5) {
- DataFlavor var6 = var3[var5];
-
- try {
- if (var6.getMimeType().toLowerCase().startsWith("text/")) {
- InputStream var7 = (InputStream)var1.getTransferData(var6);
- byte[] var8 = new byte[var7.available()];
- var7.read(var8);
- putBytesOnScrap("TEXT", var8, var4);
- var4 = false;
- } else if (var6.getRepresentationClass().getName().equals("java.lang.String")) {
- putStringOnScrap("TEXT", (String)var1.getTransferData(var6), var4);
- var4 = false;
- } else if (var6.getMimeType().toLowerCase().startsWith("application/x-javaserializedobject")) {
- ByteArrayOutputStream var11 = new ByteArrayOutputStream();
- ObjectOutputStream var12 = new ObjectOutputStream(var11);
- var12.writeObject(var1.getTransferData(var6));
- putBytesOnScrap("JSOB", var11.toByteArray(), var4);
- var4 = false;
- }
- } catch (IOException var9) {
- System.err.println("IOException in MacClipboard: " + var9);
- } catch (UnsupportedFlavorException var10) {
- System.err.println("UnsupportedFlavorException in MacClipboard: " + var10);
- }
- }
-
- }
-
- static native String[] getScrapTypes();
-
- static native void putStringOnScrap(String var0, String var1, boolean var2);
-
- static native void putBytesOnScrap(String var0, byte[] var1, boolean var2);
-
- static native String getStringFromScrap(String var0);
-
- static native byte[] getBytesFromScrap(String var0);
- }
-