|                                                                                                              1   package jimm.datavision.gui;
 2   import java.awt.datatransfer.*;
 3   import java.awt.dnd.*;
 4   import java.awt.event.MouseAdapter
  ; 5   import java.awt.event.MouseEvent
  ; 6   import javax.swing.*;
 7   import javax.swing.tree.*;
 8
 9
 14  public class FieldPickerTree
 15      extends JTree
 16      implements DragGestureListener, DragSourceListener
 17  {
 18
 19  public FieldPickerTree(DefaultTreeModel model) {
 20      super(model);
 21
 22      DragSource dragSource = DragSource.getDefaultDragSource();
 23
 24      dragSource.createDefaultDragGestureRecognizer(
 25            this,            DnDConstants.ACTION_COPY_OR_MOVE,           this);
 29          addMouseListener(new MouseAdapter
  () { 31      public void mousePressed(MouseEvent
  e) { 32          TreePath selPath = getPathForLocation(e.getX(), e.getY());
 34          if (selPath != null && e.getClickCount() == 2)
 35          doubleClicked(selPath);
 36          super.mousePressed(e);
 37      }
 38      });
 39  }
 40
 41
 48  protected void doubleClicked(TreePath selPath) {
 49      DefaultMutableTreeNode typeNode =
 50      (DefaultMutableTreeNode)getSelectionPath().getLastPathComponent();
 51      Object
  obj = typeNode.getUserObject(); 52      if (obj instanceof FPLeafInfo)
 53      ((FPLeafInfo)obj).openEditor();
 54  }
 55
 56  public void dragGestureRecognized(DragGestureEvent e) {
 57      DefaultMutableTreeNode typeNode =
 58      (DefaultMutableTreeNode)getSelectionPath().getLastPathComponent();
 59      Object
  obj = typeNode.getUserObject(); 60      if (obj instanceof FPLeafInfo) {
 61      FPLeafInfo info = (FPLeafInfo)obj;
 62      if (info != null) {
 63          e.startDrag(DragSource.DefaultCopyDrop,             new StringSelection(info.dragString()),             this);      }
 67      }
 68  }
 69
 70  public void dragDropEnd(DragSourceDropEvent e) {}
 71  public void dragEnter(DragSourceDragEvent e) {}
 72  public void dragExit(DragSourceEvent e) {}
 73  public void dragOver(DragSourceDragEvent e) {}
 74  public void dropActionChanged(DragSourceDragEvent e) {}
 75
 76
 77  public void removeCurrentNode() {
 78      TreePath currentSelection = getSelectionPath();
 79      if (currentSelection != null) {
 80      DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
 81          (currentSelection.getLastPathComponent());
 82      MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());
 83      if (parent != null) {
 84          ((DefaultTreeModel)getModel()).removeNodeFromParent(currentNode);
 85      }
 86      }
 87  }
 88
 89
 90  }
 91
                                                                                                                                                                                                             |                                                                       
 
 
 
 
 
                                                                                   Popular Tags                                                                                                                                                                                              |