From 5e4034b5cba89460a62fa958fc78c2b85acb3d5f Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 7 Oct 2014 09:18:33 +0200 Subject: Repackage to org.cristalise --- .../cristalise/gui/tree/NodeTransferHandler.java | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/main/java/org/cristalise/gui/tree/NodeTransferHandler.java (limited to 'src/main/java/org/cristalise/gui/tree/NodeTransferHandler.java') diff --git a/src/main/java/org/cristalise/gui/tree/NodeTransferHandler.java b/src/main/java/org/cristalise/gui/tree/NodeTransferHandler.java new file mode 100644 index 0000000..89f503c --- /dev/null +++ b/src/main/java/org/cristalise/gui/tree/NodeTransferHandler.java @@ -0,0 +1,74 @@ +package org.cristalise.gui.tree; + +import java.awt.datatransfer.Transferable; + +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.TransferHandler; + +import org.cristalise.gui.ImageLoader; +import org.cristalise.gui.MainFrame; +import org.cristalise.gui.TreeBrowser; +import org.cristalise.kernel.utils.Logger; + + +public class NodeTransferHandler extends TransferHandler { + + TreeBrowser tree; + + public NodeTransferHandler(TreeBrowser treeBrowser) { + tree = treeBrowser; + } + + @Override + public int getSourceActions(JComponent c) { + return COPY_OR_MOVE; + } + + @Override + public Transferable createTransferable(JComponent c) { + Node selNode = tree.getSelectedNode(); + if (selNode instanceof Transferable) + return (Transferable)selNode; + else + return null; + } + + @Override + public boolean importData(TransferSupport support) { + if (!canImport(support)) { + return false; + } + Node dropNode = tree.getNodeAt(support.getDropLocation().getDropPoint()); + if (dropNode instanceof NodeCollection) { + NodeCollection collNode = (NodeCollection)dropNode; + NodeItem source; + try { + source = (NodeItem)support.getTransferable().getTransferData(NodeItem.dataFlavor); + return collNode.addMember(source.getItemPath()); + } catch (Exception e) { + Logger.error(e); + return false; + } + } + return super.importData(support); + } + + @Override + public boolean canImport(TransferSupport support) { + boolean isNode = support.isDataFlavorSupported(NodeItem.dataFlavor); + if (!isNode) return false; + Node dropNode = tree.getNodeAt(support.getDropLocation().getDropPoint()); + if (MainFrame.isAdmin && dropNode instanceof NodeCollection && ((NodeCollection)dropNode).isDependency()) + return true; + return false; + + } + + @Override + public Icon getVisualRepresentation(Transferable t) { + if (t instanceof NodeItem) + return (((NodeItem)t).getIcon()); + return ImageLoader.nullImg; + } +} -- cgit v1.2.3