From e4ccc012a781d794c06b8d3fd27e0a1f532b3fe7 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 3 Aug 2012 14:03:59 +0200 Subject: Menu item on collection members in the tree to remove them. Drag items onto dependencies to add them. Dependency view Logging cleanup Fixes #42 --- .../com/c2kernel/gui/tree/NodeTransferHandler.java | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/main/java/com/c2kernel/gui/tree/NodeTransferHandler.java (limited to 'src/main/java/com/c2kernel/gui/tree/NodeTransferHandler.java') diff --git a/src/main/java/com/c2kernel/gui/tree/NodeTransferHandler.java b/src/main/java/com/c2kernel/gui/tree/NodeTransferHandler.java new file mode 100644 index 0000000..b9103af --- /dev/null +++ b/src/main/java/com/c2kernel/gui/tree/NodeTransferHandler.java @@ -0,0 +1,71 @@ +package com.c2kernel.gui.tree; + +import java.awt.datatransfer.Transferable; + +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.TransferHandler; + +import com.c2kernel.gui.ImageLoader; +import com.c2kernel.gui.MainFrame; +import com.c2kernel.gui.TreeBrowser; +import com.c2kernel.utils.Logger; + +public class NodeTransferHandler extends TransferHandler { + + TreeBrowser tree; + + public NodeTransferHandler(TreeBrowser treeBrowser) { + tree = treeBrowser; + } + + public int getSourceActions(JComponent c) { + return COPY_OR_MOVE; + } + + 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.getSysKey()); + } 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