package net.codjo.dataprocess.gui.util.sqleditor.components; 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; /** * */ public abstract class StringTransferHandler extends TransferHandler { protected abstract String exportString(JComponent jc); protected abstract void importString(JComponent jc, String str); protected abstract void cleanup(JComponent jc, boolean remove); @Override protected Transferable createTransferable(JComponent jc) { return new StringSelection(exportString(jc)); } @Override public int getSourceActions(JComponent jc) { return COPY; } @Override public boolean importData(JComponent jc, Transferable tt) { if (canImport(jc, tt.getTransferDataFlavors())) { try { String str = (String)tt.getTransferData(DataFlavor.stringFlavor); importString(jc, str); return true; } catch (UnsupportedFlavorException ufe) { ; } catch (IOException ioe) { ; } } return false; } @Override protected void exportDone(JComponent jc, Transferable data, int action) { cleanup(jc, action == MOVE); } @Override public boolean canImport(JComponent jc, DataFlavor[] flavors) { for (DataFlavor flavor : flavors) { if (DataFlavor.stringFlavor.equals(flavor)) { return true; } } return false; } }