4 class SelectNodeHandler
5 constructor: (tree_widget) ->
6 @tree_widget = tree_widget
10 selected_nodes = @getSelectedNodes()
12 if selected_nodes.length
13 return selected_nodes[0]
18 if @selected_single_node
19 return [@selected_single_node]
23 for id of @selected_nodes
24 node = @tree_widget.getNodeById(id)
26 selected_nodes.push(node)
30 getSelectedNodesUnder: (parent) ->
31 if @selected_single_node
32 if parent.isParentOf(@selected_single_node)
33 return [@selected_single_node]
39 for id of @selected_nodes
40 node = @tree_widget.getNodeById(id)
41 if node and parent.isParentOf(node)
42 selected_nodes.push(node)
46 isNodeSelected: (node) ->
50 if @selected_nodes[node.id]
54 else if @selected_single_node
55 return @selected_single_node.element == node.element
61 @selected_single_node = null
63 removeFromSelection: (node, include_children=false) ->
65 if @selected_single_node && node.element == @selected_single_node.element
66 @selected_single_node = null
68 delete @selected_nodes[node.id]
73 delete @selected_nodes[node.id]
77 addToSelection: (node) ->
79 @selected_nodes[node.id] = true
81 @selected_single_node = node
84 module.exports = SelectNodeHandler