UTest.java Source code

Java tutorial

Introduction

Here is the source code for UTest.java

Source

/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly 
*/
// UTest.java
//A test frame work for the UberHandler drop handler. This version has
//no fancy Unicode characters for ease of use. (Note that "ease of use"
//only applys to humans...the Java tools are quite happy with Unicode
//characters. Not all text editors are, though...)
//

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.io.BufferedReader;
import java.io.Reader;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.TransferHandler;

public class UTest {

    public static void main(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);
    }
}

//UberHandler.java
//A TransferHandler that will accept any drop at all. If a text area is
//registered, debugging information will be sent there. Otherwise, all
//debug information will be sent to stdout.
//

class UberHandler extends TransferHandler {
    JTextArea output;

    public void TransferHandler() {
    }

    public boolean canImport(JComponent dest, DataFlavor[] flavors) {
        // you bet we can!
        return true;
    }

    public boolean importData(JComponent src, 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 void exportDone(JComponent source, Transferable data, int action) {
        // Just let us know when it occurs...
        System.err.println("Export Done.");
    }

    public void setOutput(JTextArea jta) {
        output = jta;
    }

    protected void print(Object o) {
        print(o.toString());
    }

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

    protected void println(Object o) {
        println(o.toString());
    }

    protected void println(String s) {
        if (output != null) {
            output.append(s);
            output.append("\n");
        } else {
            System.out.println(s);
        }
    }

    protected void println() {
        println("");
    }

    public static void main(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);
    }
}