001 /* BEE - Book Editing Environment for PAVLOV 002 * Copyright (C) 2004 T.J. Willis 003 * 004 * This program is free software; you can redistribute it and/or 005 * modify it under the terms of the GNU General Public License 006 * as published by the Free Software Foundation; either version 2 007 * of the License, or (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program; if not, write to the Free Software 016 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. 017 * 018 * $Header: /cvsroot/pavlov/net/sourceforge/bee/StringTransferHandler.java,v 1.3 2004/06/03 03:18:23 tj_willis Exp $ 019 */ 020 021 /* 022 * StringTransferHandler.java is used by the 1.4 023 * ExtendedDnDDemo.java example. 024 */ 025 package net.sourceforge.bee; 026 027 import java.awt.datatransfer.*; 028 import javax.swing.*; 029 import java.io.IOException; 030 031 public abstract class StringTransferHandler extends TransferHandler { 032 033 protected abstract String exportString(JComponent comp); 034 protected abstract void importString(JComponent comp, String str); 035 protected abstract void cleanup(JComponent comp, boolean remove); 036 037 protected Transferable createTransferable(JComponent comp) { 038 return new StringSelection(exportString(comp)); 039 } 040 041 public int getSourceActions(JComponent comp) { 042 return COPY_OR_MOVE; 043 } 044 045 public boolean importData(JComponent comp, Transferable trans) { 046 boolean ret = false; 047 if (canImport(comp, trans.getTransferDataFlavors())) { 048 try { 049 String str = (String)trans.getTransferData(DataFlavor.stringFlavor); 050 importString(comp, str); 051 ret = true; 052 } catch (UnsupportedFlavorException ufe) { 053 } catch (IOException ioe) { 054 } 055 } 056 057 return ret; 058 } 059 060 protected void exportDone(JComponent comp, Transferable data, int action) { 061 cleanup(comp, action == MOVE); 062 } 063 064 public boolean canImport(JComponent comp, DataFlavor[] flavors) { 065 boolean ret = false; 066 for (int i = 0; i < flavors.length; i++) { 067 if (DataFlavor.stringFlavor.equals(flavors[i])) { 068 ret = true; 069 } else if (DataFlavor.plainTextFlavor.equals(flavors[i])) { 070 ret = true; 071 } 072 } 073 return ret; 074 } 075 }