1 node = require './node'
2 Position = node.Position
9 constructor: (node, tree_widget) ->
10 @init(node, tree_widget)
12 init: (node, tree_widget) ->
14 @tree_widget = tree_widget
17 node.element = @tree_widget.element
19 @$element = $(node.element)
22 return @$element.children('ul:first')
25 return @$element.children('.jqtree-element').find('span.jqtree-title')
30 addDropHint: (position) ->
31 if position == Position.INSIDE
32 return new BorderDropHint(@$element)
34 return new GhostDropHint(@node, @$element, position)
39 $li.addClass('jqtree-selected')
40 $li.attr('aria-selected', 'true')
43 $span.attr('tabindex', 0)
48 $li.removeClass('jqtree-selected')
49 $li.attr('aria-selected', 'false')
52 $span.attr('tabindex', -1)
55 class FolderElement extends NodeElement
56 open: (on_finished, slide=true) ->
59 $button = @getButton()
60 $button.removeClass('jqtree-closed')
62 $button.append(@tree_widget.renderer.opened_icon_element.cloneNode(false))
66 $li.removeClass('jqtree-closed')
69 $span.attr('aria-expanded', 'true')
74 @tree_widget._triggerEvent('tree.open', node: @node)
77 @getUl().slideDown('fast', doOpen)
82 close: (slide=true) ->
85 $button = @getButton()
86 $button.addClass('jqtree-closed')
88 $button.append(@tree_widget.renderer.closed_icon_element.cloneNode(false))
92 $li.addClass('jqtree-closed')
95 $span.attr('aria-expanded', 'false')
97 @tree_widget._triggerEvent('tree.close', node: @node)
100 @getUl().slideUp('fast', doClose)
106 return @$element.children('.jqtree-element').find('a.jqtree-toggler')
108 addDropHint: (position) ->
109 if not @node.is_open and position == Position.INSIDE
110 return new BorderDropHint(@$element)
112 return new GhostDropHint(@node, @$element, position)
116 constructor: ($element) ->
117 $div = $element.children('.jqtree-element')
118 width = $element.width() - 4
120 @$hint = $('<span class="jqtree-border"></span>')
125 height: $div.outerHeight() - 4
133 constructor: (node, $element, position) ->
137 @$ghost = $('<li class="jqtree_common jqtree-ghost"><span class="jqtree_common jqtree-circle"></span><span class="jqtree_common jqtree-line"></span></li>')
139 if position == Position.AFTER
141 else if position == Position.BEFORE
143 else if position == Position.INSIDE
144 if node.isFolder() and node.is_open
145 @moveInsideOpenFolder()
153 @$element.after(@$ghost)
156 @$element.before(@$ghost)
158 moveInsideOpenFolder: ->
159 $(@node.children[0].element).before(@$ghost)
162 @$element.after(@$ghost)
163 @$ghost.addClass('jqtree-inside')
167 BorderDropHint: BorderDropHint
168 FolderElement: FolderElement
169 GhostDropHint: GhostDropHint
170 NodeElement: NodeElement