Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4066902

Clipboard.setContents not working for custom flavor

XMLWordPrintable

    • generic, x86, sparc
    • generic, solaris, solaris_7, windows_95, windows_nt



      Name: el35337 Date: 07/23/97


      The clipboard contents in win32 does not seem to be able
      to be set to custom flavors: the following code fails
      under win32 (NT and 95) but works under solaris:

      import java.awt.datatransfer.*;
      import java.awt.*;
      import java.io.*;
       
      class SuperDuperObject
      {
          int value;
          public SuperDuperObject(int value) {
              this.value = value;
          }

          public String toString() {
              return "SuperDuper:" + value;
          }
      }

      class MyTransferable implements Transferable
      {

          public static DataFlavor myFlavor;
          static {
              try {
                  myFlavor = new DataFlavor(
                                  Class.forName("SuperDuperObject"),
                                  "SuperDuperObject");
              } catch ( ClassNotFoundException ex ) {
              }
          }

          private static final int MY = 0;
          private static final int STRING = 1;
          private static final int PLAIN_TEXT = 2;

          private DataFlavor[] flavors = {
              myFlavor,
              DataFlavor.stringFlavor,
              DataFlavor.plainTextFlavor
          };

          private SuperDuperObject obj;

          public MyTransferable(SuperDuperObject obj) { this.obj = obj; }
          public synchronized DataFlavor[] getTransferDataFlavors() { return flavors;>
          public boolean isDataFlavorSupported(DataFlavor flavor) {
              return (flavor.equals(flavors[STRING])
                      || flavor.equals(flavors[PLAIN_TEXT])
                      || flavor.equals(flavors[MY]));
          }

          public synchronized Object getTransferData(DataFlavor flavor)
                              throws UnsupportedFlavorException, IOException {
              if (flavor.equals(flavors[STRING])) {
                  return (Object)obj.toString();
              } else if (flavor.equals(flavors[PLAIN_TEXT])) {
                  return new StringReader(obj.toString());
              } else if (flavor.equals(flavors[MY])) {
                  return obj;
              } else {
                  throw new UnsupportedFlavorException(flavor);
              }
          }

          public void lostOwnership(Clipboard clipboard, Transferable contents) {
          }
      }

      public class ClipTest
          implements ClipboardOwner
      {
          Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();

          public static void main(String args[])
          {
              new ClipTest();
          }

          public ClipTest() {
              //
              // first create the object and attempt to send it to
              // the clipboard
              SuperDuperObject obj = new SuperDuperObject(222);
              Transferable contents = new MyTransferable(obj);
              clipboard.setContents(contents, this);
              System.out.println("atttempted to set clipboard contents set to: "
                                      + obj);
              
              //
              // now grab the content back from the clipboard
              // print it to see what we have
              Transferable content = clipboard.getContents(this);
              System.out.println("content = " + content);
              System.out.println("----");
              System.out.println("if this test worked, the above content");
              System.out.println("should be a MyTransferable object");
              
              if (content != null)
              {
                  try {
                      Object data = content.getTransferData(MyTransferable.myFlavor);
                      System.out.println("data = " + data);
                  } catch (Exception e) {
                      System.out.println("the clipboard contents do not support "
                          + "the myFlavor DataFlavor");
                      e.printStackTrace();
                  }
              }
          }
           
          public void lostOwnership(Clipboard clipboard, Transferable contents) {
               System.out.println("Clipboard contents replaced");
          }
              
      }

      company - Novafex Software Limited , email - ###@###.###
      ================================================================
      ======
      ronan.mandel@Eng 1997-11-12
      As JDK 1.2 is being delayed, I'd like to stress
      that access to non-text formats on the system
      clipboard is essential for the success of Java.

      I've expected this feature in JDK 1.1 already but
      it sure can't wait until the release of JDK 1.2.
      There must be an easy mechanism to convert the
      byte sequences taged by a format key on the
      Windows clipboard into a custom object within
      an applet or application.

      I've been promised this feature for 'the next release'
      but this should not be 1.2!!

      My main interest is in fetching chemical structure
      information from the clipboard to be used within
      database search tools. Note: image bitmaps are
      not a solution. I need the native format for which
      there exist 'industry standards'.

      Bernd

      PS: I may have missed the description of how to do
      this in the current release. If there is anything
      more than just 'issue to be resolved', I'd love
      to know the resource.




      calvin.austin@Eng 1998-06-15
      You know bug 4032895 seems related to this, either 4032895 is still broken
      or this bug may be fixed

            dmendenhsunw David Mendenhall (Inactive)
            elarsen Erik Larsen (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: