diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2012-08-03 14:03:59 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2012-08-03 14:03:59 +0200 |
| commit | e4ccc012a781d794c06b8d3fd27e0a1f532b3fe7 (patch) | |
| tree | 7f96e165b1583b75c39221ee59d15e2d3f160650 /src/main/java/com/c2kernel/gui/TreeBrowser.java | |
| parent | 8c272e0261686302e86849ad86ae8fa393d9e95e (diff) | |
Menu item on collection members in the tree to remove them.
Drag items onto dependencies to add them.
Dependency view
Logging cleanup
Fixes #42
Diffstat (limited to 'src/main/java/com/c2kernel/gui/TreeBrowser.java')
| -rw-r--r-- | src/main/java/com/c2kernel/gui/TreeBrowser.java | 54 |
1 files changed, 37 insertions, 17 deletions
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;
- }
}
}
|
