/** * Gets the tree path according to the mouse event. * * @param e the mouse event * @return the tree path the mouse is over. null if no tree node is under the mouse position. */ protected TreePath getTreePathForMouseEvent(MouseEvent e) { if (!SwingUtilities.isLeftMouseButton(e)) { return null; } if (!_tree.isCheckBoxEnabled()) { return null; } TreePath path = _tree.getPathForLocation(e.getX(), e.getY()); if (path == null) return null; if (clicksInCheckBox(e, path) || !_tree.isClickInCheckBoxOnly()) { return path; } else { return null; } }
public void mousePressed(MouseEvent e) { if (e.isConsumed()) { return; } TreePath path = preventToggleEvent(e); if (path != null) { toggleSelections(new TreePath[]{path}); Object source = e.getSource(); if (source instanceof JTree) { JTree tree = ((JTree) source); if (!tree.hasFocus() && tree.isFocusable() && tree.isRequestFocusEnabled()) { tree.requestFocusInWindow(); } } e.consume(); } }
/** * Toggles the selected paths' selection state. */ protected void toggleSelections() { TreePath[] treePaths = _tree.getSelectionPaths(); toggleSelections(treePaths); }
public void keyPressed(KeyEvent e) { if (e.isConsumed()) { return; } if (!_tree.isCheckBoxEnabled()) { return; } if (e.getModifiers() == 0 && e.getKeyChar() == KeyEvent.VK_SPACE) toggleSelections(); }
public void mouseClicked(MouseEvent e) { if (e.isConsumed()) { return; } preventToggleEvent(e); }
private TreePath preventToggleEvent(MouseEvent e) { TreePath pathForMouseEvent = getTreePathForMouseEvent(e); if (pathForMouseEvent != null) { int toggleCount = _tree.getToggleClickCount(); if (toggleCount != -1) { _toggleCount = toggleCount; _tree.setToggleClickCount(-1); } } return pathForMouseEvent; }
public void mouseReleased(MouseEvent e) { if (e.isConsumed()) { return; } TreePath path = preventToggleEvent(e); if (path != null) { e.consume(); } if (_toggleCount != -1) { _tree.setToggleClickCount(_toggleCount); } }
/** * Creates the mouse listener and key listener used by CheckBoxTree. * * @return the Handler. */ protected Handler createHandler() { return new Handler(this); }