FileDocCategorySizeDatePackage
UberHandler.javaAPI DocExample4077Thu Oct 24 20:14:28 BST 2002None

UberHandler

public class UberHandler extends TransferHandler

Fields Summary
JTextArea
output
Constructors Summary
Methods Summary
public voidTransferHandler()

 
public booleancanImport(javax.swing.JComponent dest, java.awt.datatransfer.DataFlavor[] flavors)

    // you bet we can!
    return true;
  
public voidexportDone(javax.swing.JComponent source, java.awt.datatransfer.Transferable data, int action)

    // Just let us know when it occurs...
    System.err.println("Export Done.");
  
public booleanimportData(javax.swing.JComponent src, java.awt.datatransfer.Transferable transferable)

    // Ok, here's the tricky part...
    println("Receiving data from " + src);
    println("Transferable object is: " + transferable);
    println("Valid data flavors: ");
    DataFlavor[] flavors = transferable.getTransferDataFlavors();
    DataFlavor listFlavor = null;
    DataFlavor objectFlavor = null;
    DataFlavor readerFlavor = null;
    int lastFlavor = flavors.length - 1;

    // Check the flavors and see if we find one we like.
    // If we do, save it.
    for (int f = 0; f <= lastFlavor; f++) {
      println("  " + flavors[f]);
      if (flavors[f].isFlavorJavaFileListType()) {
        listFlavor = flavors[f];
      }
      if (flavors[f].isFlavorSerializedObjectType()) {
        objectFlavor = flavors[f];
      }
      if (flavors[f].isRepresentationClassReader()) {
        readerFlavor = flavors[f];
      }
    }

    // Ok, now try to display the content of the drop.
    try {
      DataFlavor bestTextFlavor = DataFlavor.selectBestTextFlavor(flavors);
      BufferedReader br = null;
      String line = null;
      if (bestTextFlavor != null) {
        println("Best text flavor: " + bestTextFlavor.getMimeType());
        println("Content:");
        Reader r = bestTextFlavor.getReaderForText(transferable);
        br = new BufferedReader(r);
        line = br.readLine();
        while (line != null) {
          println(line);
          line = br.readLine();
        }
        br.close();
      }
      else if (listFlavor != null) {
        java.util.List list = (java.util.List)transferable.getTransferData(listFlavor);
        println(list);
      }
      else if (objectFlavor != null) {
        println("Data is a java object:\n" + transferable.getTransferData(objectFlavor));
      }
      else if (readerFlavor != null) {
        println("Data is an InputStream:");
        br = new BufferedReader((Reader)transferable.getTransferData(readerFlavor));
        line = br.readLine();
        while (line != null) {
          println(line);
        }
        br.close();
      }
      else {
        // Don't know this flavor type yet...
        println("No text representation to show.");
      }
      println("\n\n");
    }
    catch (Exception e) {
      println("Caught exception decoding transfer:");
      println(e);
      return false;
    }
    return true;
  
public static voidmain(java.lang.String[] args)

    JFrame frame = new JFrame("Debugging Drop Zone");
    frame.setSize(500,300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextArea jta = new JTextArea();
    frame.getContentPane().add(new JScrollPane(jta));
    UberHandler uh = new UberHandler();
    uh.setOutput(jta);
    jta.setTransferHandler(uh);

    frame.setVisible(true);
  
protected voidprint(java.lang.Object o)

    print(o.toString());
  
protected voidprint(java.lang.String s)

    if (output != null) {
      output.append(s);
    }
    else {
      System.out.println(s);
    }
  
protected voidprintln()

    println("");
  
protected voidprintln(java.lang.Object o)

    println(o.toString());
  
protected voidprintln(java.lang.String s)

    if (output != null) {
      output.append(s);
      output.append("\n");
    }
    else {
      System.out.println(s);
    }
  
public voidsetOutput(javax.swing.JTextArea jta)

    output = jta;