blob: 1c1fe5829bd491646908a1feb60ddf11f1e60346 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
$ = jQuery
class SelectNodeHandler
constructor: (tree_widget) ->
@tree_widget = tree_widget
@clear()
getSelectedNode: ->
selected_nodes = @getSelectedNodes()
if selected_nodes.length
return selected_nodes[0]
else
return false
getSelectedNodes: ->
if @selected_single_node
return [@selected_single_node]
else
selected_nodes = []
for id of @selected_nodes
node = @tree_widget.getNodeById(id)
if node
selected_nodes.push(node)
return selected_nodes
getSelectedNodesUnder: (parent) ->
if @selected_single_node
if parent.isParentOf(@selected_single_node)
return [@selected_single_node]
else
return []
else
selected_nodes = []
for id of @selected_nodes
node = @tree_widget.getNodeById(id)
if node and parent.isParentOf(node)
selected_nodes.push(node)
return selected_nodes
isNodeSelected: (node) ->
if not node
return false
else if node.id
if @selected_nodes[node.id]
return true
else
return false
else if @selected_single_node
return @selected_single_node.element == node.element
else
return false
clear: ->
@selected_nodes = {}
@selected_single_node = null
removeFromSelection: (node, include_children=false) ->
if not node.id
if @selected_single_node && node.element == @selected_single_node.element
@selected_single_node = null
else
delete @selected_nodes[node.id]
if include_children
node.iterate(
(n) =>
delete @selected_nodes[node.id]
return true
)
addToSelection: (node) ->
if node.id
@selected_nodes[node.id] = true
else
@selected_single_node = node
module.exports = SelectNodeHandler
|