10 constructor: (tree_widget) ->
11 @tree_widget = tree_widget
13 if tree_widget.options.keyboardSupport
14 $(document).bind('keydown.jqtree', $.proxy(@handleKeyDown, this))
17 $(document).unbind('keydown.jqtree')
20 node = @tree_widget.getSelectedNode()
23 return @selectNode(node.getNextNode())
28 node = @tree_widget.getSelectedNode()
31 return @selectNode(node.getPreviousNode())
36 node = @tree_widget.getSelectedNode()
40 else if not node.isFolder()
45 # Right moves to the first child of an open node
46 return @selectNode(node.getNextNode())
48 # Right expands a closed node
49 @tree_widget.openNode(node)
53 node = @tree_widget.getSelectedNode()
57 else if node.isFolder() and node.is_open
58 # Left on an open node closes the node
59 @tree_widget.closeNode(node)
62 # Left on a closed or end node moves focus to the node's parent
63 return @selectNode(node.getParent())
66 if not @tree_widget.options.keyboardSupport
69 if $(document.activeElement).is('textarea,input,select')
72 if not @tree_widget.getSelectedNode()
96 @tree_widget.selectNode(node)
99 @tree_widget.scroll_handler and
100 (not @tree_widget.scroll_handler.isScrolledIntoView($(node.element).find('.jqtree-element')))
102 @tree_widget.scrollToNode(node)
107 module.exports = KeyHandler