nexus site path corrected
[portal.git] / ecomp-portal-FE / client / bower_components / jqTree / src / key_handler.coffee
1 $ = jQuery
2
3
4 class KeyHandler
5     LEFT = 37
6     UP = 38
7     RIGHT = 39
8     DOWN = 40
9
10     constructor: (tree_widget) ->
11         @tree_widget = tree_widget
12
13         if tree_widget.options.keyboardSupport
14             $(document).bind('keydown.jqtree', $.proxy(@handleKeyDown, this))
15
16     deinit: ->
17         $(document).unbind('keydown.jqtree')
18
19     moveDown: ->
20         node = @tree_widget.getSelectedNode()
21
22         if node
23             return @selectNode(node.getNextNode())
24         else
25             return false
26
27     moveUp: ->
28         node = @tree_widget.getSelectedNode()
29
30         if node
31             return @selectNode(node.getPreviousNode())
32         else
33             return false
34
35     moveRight: ->
36         node = @tree_widget.getSelectedNode()
37
38         if not node
39             return true
40         else if not node.isFolder()
41             return true
42         else
43             # folder node
44             if node.is_open
45                 # Right moves to the first child of an open node
46                 return @selectNode(node.getNextNode())
47             else
48                 # Right expands a closed node
49                 @tree_widget.openNode(node)
50                 return false
51
52     moveLeft: ->
53         node = @tree_widget.getSelectedNode()
54
55         if not node
56             return true
57         else if node.isFolder() and node.is_open
58             # Left on an open node closes the node
59             @tree_widget.closeNode(node)
60             return false
61         else
62             # Left on a closed or end node moves focus to the node's parent
63             return @selectNode(node.getParent())
64
65     handleKeyDown: (e) ->
66         if not @tree_widget.options.keyboardSupport
67             return true
68
69         if $(document.activeElement).is('textarea,input,select')
70             return true
71
72         if not @tree_widget.getSelectedNode()
73             return true
74
75         key = e.which
76
77         switch key
78             when DOWN
79                 return @moveDown()
80
81             when UP
82                 return @moveUp()
83
84             when RIGHT
85                 return @moveRight()
86
87             when LEFT
88                 return @moveLeft()
89
90         return true
91
92     selectNode: (node) =>
93         if not node
94             return true
95         else
96             @tree_widget.selectNode(node)
97
98             if (
99                 @tree_widget.scroll_handler and
100                 (not @tree_widget.scroll_handler.isScrolledIntoView($(node.element).find('.jqtree-element')))
101             )
102                 @tree_widget.scrollToNode(node)
103
104             return false
105
106
107 module.exports = KeyHandler