/* * Created on Jun 1, 2005 * */ package cytoscape.editor.impl; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import javax.swing.JComponent; import javax.swing.TransferHandler; /** * base class for the PaletteListTransferHandler of the ShapePalette * taken from Java drag and drop tutorial, see http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html */ public abstract class StringTransferHandler extends TransferHandler { protected abstract String exportString(JComponent c); protected abstract void importString(JComponent c, String str); protected abstract void cleanup(JComponent c, boolean remove); protected Transferable createTransferable(JComponent c) { return new StringSelection(exportString(c)); } /** * DOCUMENT ME! * * @param c DOCUMENT ME! * * @return DOCUMENT ME! */ public int getSourceActions(JComponent c) { return COPY_OR_MOVE; } /** * DOCUMENT ME! * * @param c DOCUMENT ME! * @param t DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean importData(JComponent c, Transferable t) { if (canImport(c, t.getTransferDataFlavors())) { try { String str = (String) t.getTransferData(DataFlavor.stringFlavor); importString(c, str); return true; } catch (UnsupportedFlavorException ufe) { } catch (IOException ioe) { } } return false; } protected void exportDone(JComponent c, Transferable data, int action) { cleanup(c, action == MOVE); } /** * DOCUMENT ME! * * @param c DOCUMENT ME! * @param flavors DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean canImport(JComponent c, DataFlavor[] flavors) { for (int i = 0; i < flavors.length; i++) { if (DataFlavor.stringFlavor.equals(flavors[i])) { return true; } } return false; } }