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 --- src/main/java/com/c2kernel/gui/TreeBrowser.java | 54 +++++++++++++++++-------- 1 file changed, 37 insertions(+), 17 deletions(-) (limited to 'src/main/java/com/c2kernel/gui/TreeBrowser.java') diff --git a/src/main/java/com/c2kernel/gui/TreeBrowser.java b/src/main/java/com/c2kernel/gui/TreeBrowser.java index bcafe00..5a5d3ff 100644 --- a/src/main/java/com/c2kernel/gui/TreeBrowser.java +++ b/src/main/java/com/c2kernel/gui/TreeBrowser.java @@ -2,9 +2,11 @@ package com.c2kernel.gui; import java.awt.Component; import java.awt.Dimension; +import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import javax.swing.DropMode; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -21,6 +23,7 @@ import javax.swing.tree.TreeSelectionModel; import com.c2kernel.gui.tree.Node; import com.c2kernel.gui.tree.NodeEntity; +import com.c2kernel.gui.tree.NodeTransferHandler; import com.c2kernel.lookup.DomainPath; import com.c2kernel.utils.Logger; @@ -74,6 +77,9 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer ToolTipManager.sharedInstance().registerComponent(tree); tree.setCellRenderer(new ItemRenderer()); tree.addMouseListener(new TreeMouseListener()); + tree.setDragEnabled(true); + tree.setDropMode(DropMode.ON); + tree.setTransferHandler(new NodeTransferHandler(this)); JScrollPane myScrollPane = new JScrollPane(tree); this.add(myScrollPane); DefaultMutableTreeNode loadNode = (DefaultMutableTreeNode)userRoot.getTreeNode().getFirstChild(); @@ -84,7 +90,6 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer @Override public void push(DomainPath target) { - Logger.debug("Opening tree node "+target); String[] components = target.getPath(); Node currentNode = userRoot; Object[] treePath = new Object[components.length+1]; @@ -122,13 +127,40 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer } } - @Override + public JTree getTree() { + return tree; + } + + @Override public void push(String name) { // only interested in real paths JOptionPane.showMessageDialog(null, "'"+name+"' was not found.", "No results", JOptionPane.INFORMATION_MESSAGE); } + + public Node getSelectedNode() { + Object selObj = tree.getLastSelectedPathComponent(); + if (selObj != null) + try { + DefaultMutableTreeNode nodeClicked = (DefaultMutableTreeNode)selObj; + Object userObject = nodeClicked.getUserObject(); + if (userObject instanceof Node) return (Node)userObject; + } catch (Exception ex) { } // Not a node that was clicked on + return null; + } + + public Node getNodeAt(Point p) { + TreePath selPath = tree.getPathForLocation(p.x, p.y); + if (selPath != null) + try { + DefaultMutableTreeNode nodeClicked = (DefaultMutableTreeNode)selPath.getLastPathComponent(); + Object userObject = nodeClicked.getUserObject(); + if (userObject instanceof Node) return (Node)userObject; + } + catch (Exception ex) { } // Not a node that was clicked on + return null; + } private static void dumpPath(TreePath selPath, int logLevel) { if (selPath == null) { Logger.msg(logLevel, "TreeBrowser.dumpPath() - selPath null"); return; } @@ -148,7 +180,7 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer if (thisLeaf instanceof Node) { Node thisNode = (Node)thisLeaf; if (thisNode.getIcon() !=null) setIcon(thisNode.getIcon()); - setToolTipText(thisNode.getType()); + setToolTipText(thisNode.getToolTip()); } else if (thisLeaf instanceof DynamicTreeBuilder) { DynamicTreeBuilder thisLoader = (DynamicTreeBuilder)thisLeaf; @@ -167,7 +199,7 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer if (e.isPopupTrigger()) showPopup(e); else { - Object source = getNodeAt(e); + Object source = getNodeAt(e.getPoint()); if (source == null) return; if (e.getClickCount() == 2) { if (source instanceof NodeEntity) { @@ -190,24 +222,12 @@ public class TreeBrowser extends JPanel implements DomainKeyConsumer } } private void showPopup(MouseEvent e) { - Object source = getNodeAt(e); + Object source = getNodeAt(e.getPoint()); if (source == null) return; if (source instanceof Node) { Node thisNode = (Node)source; thisNode.getPopupMenu().show(e.getComponent(), e.getX(), e.getY()); } } - private Object getNodeAt(MouseEvent e) { - Object source = null; - TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); - if (selPath != null) - try { - DefaultMutableTreeNode nodeClicked = (DefaultMutableTreeNode)selPath.getLastPathComponent(); - source = nodeClicked.getUserObject(); // fetch its nodeItem - } - catch (Exception ex) { } // Not a node that was clicked on - - return source; - } } } -- cgit v1.2.3