/* * Zettelkasten - nach Luhmann * Copyright (C) 2001-2015 by Daniel Lüdecke (http://www.danielluedecke.de) * * Homepage: http://zettelkasten.danielluedecke.de * * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; * if not, see <http://www.gnu.org/licenses/>. * * * Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU * General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben * und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (wenn Sie möchten) * jeder späteren Version. * * Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein * wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder * der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der * GNU General Public License. * * Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm * erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>. */ package de.danielluedecke.zettelkasten.util.classes; import de.danielluedecke.zettelkasten.util.Constants; 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 java.util.logging.Level; import javax.swing.JComponent; import javax.swing.TransferHandler; /** * * @author danielludecke */ public abstract class MoveStringTransferHandler extends TransferHandler { protected abstract String exportString(JComponent c); protected abstract boolean importString(JComponent c, String str); protected abstract void cleanup(JComponent c, boolean remove); @Override protected Transferable createTransferable(JComponent c) { return new StringSelection(exportString(c)); } @Override public int getSourceActions(JComponent c) { return COPY_OR_MOVE; } @Override public boolean importData(JComponent c, Transferable t) { if (canImport(c, t.getTransferDataFlavors())) { try { String str = (String)t.getTransferData(DataFlavor.stringFlavor); return importString(c, str); // return true; } catch (UnsupportedFlavorException | IOException ufe) { Constants.zknlogger.log(Level.WARNING,ufe.getLocalizedMessage()); } } return false; } @Override protected void exportDone(JComponent c, Transferable data, int action) { cleanup(c, action == MOVE); } @Override public boolean canImport(JComponent c, DataFlavor[] flavors) { for (DataFlavor flavor : flavors) { if (DataFlavor.stringFlavor.equals(flavor)) { return true; } } return false; } }