Beispiel #1
0
 @Nullable
 public static Object getTagAtForRenderer(
     CheckboxTree.CheckboxTreeCellRenderer renderer, MouseEvent e) {
   JTree tree = (JTree) e.getSource();
   Object tag = null;
   final TreePath path = tree.getPathForLocation(e.getX(), e.getY());
   if (path != null) {
     final Rectangle rectangle = tree.getPathBounds(path);
     assert rectangle != null;
     int dx = e.getX() - rectangle.x;
     final TreeNode treeNode = (TreeNode) path.getLastPathComponent();
     final int row = tree.getRowForLocation(e.getX(), e.getY());
     tree.getCellRenderer()
         .getTreeCellRendererComponent(tree, treeNode, false, false, true, row, true);
     if (treeNode instanceof RepositoryNode) {
       RepositoryNode repositoryNode = (RepositoryNode) treeNode;
       int checkBoxWidth =
           repositoryNode.isCheckboxVisible() ? renderer.getCheckbox().getWidth() : 0;
       tag = renderer.getTextRenderer().getFragmentTagAt(dx - checkBoxWidth);
     } else {
       tag = renderer.getTextRenderer().getFragmentTagAt(dx);
     }
   }
   return tag;
 }
 /**
  * Mouse Click Event.
  *
  * @param e MouseEvent Object.
  */
 public void mouseClicked(MouseEvent e) {
   int x = e.getX();
   int y = e.getY();
   int row = tree.getRowForLocation(x, y);
   TreePath path = tree.getPathForRow(row);
   if (path != null) {
     CheckNode node = (CheckNode) path.getLastPathComponent();
     boolean isSelected = !(node.isSelected());
     node.setSelected(isSelected);
     if (node.getSelectionMode() == CheckNode.DIG_IN_SELECTION) {
       if (isSelected) {
         tree.expandPath(path);
       } else {
         tree.collapsePath(path);
       }
     }
     ((DefaultTreeModel) tree.getModel()).nodeChanged(node);
     if (row == 0) {
       tree.revalidate();
       tree.repaint();
     }
   }
 }