Newer
Older
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
/**!
* jquery.fancytree.contextmenu.js
*
* Integrate the 'jQuery contextMenu' plugin as Fancytree extension:
* https://github.com/swisnl/jQuery-contextMenu
*
* Copyright (c) 2008-2017, Martin Wendt (http://wwWendt.de)
* Released under the MIT license
* https://github.com/mar10/fancytree/wiki/LicenseInfo
*/
(function($, document) {
"use strict";
var initContextMenu = function(tree, selector, menu, actions) {
tree.$container.on("mousedown.contextMenu", function(event) {
var node = $.ui.fancytree.getNode(event);
if(node) {
$.contextMenu("destroy", "." + selector);
node.setFocus(true);
node.setActive(true);
$.contextMenu({
selector: "." + selector,
events: {
show: function(options) {
options.prevKeyboard = tree.options.keyboard;
tree.options.keyboard = false;
},
hide: function(options) {
tree.options.keyboard = options.prevKeyboard;
node.setFocus(true);
}
},
build: function($trigger, e) {
node = $.ui.fancytree.getNode($trigger);
var menuItems = { };
if($.isFunction(menu)) {
menuItems = menu(node);
} else if($.isPlainObject(menu)) {
menuItems = menu;
}
return {
callback: function(action, options) {
if($.isFunction(actions)) {
actions(node, action, options);
} else if($.isPlainObject(actions)) {
if(actions.hasOwnProperty(action) && $.isFunction(actions[action])) {
actions[action](node, options);
}
}
},
items: menuItems
};
}
});
}
});
};
$.ui.fancytree.registerExtension({
name: "contextMenu",
version: "@VERSION",
contextMenu: {
selector: "fancytree-title",
menu: {},
actions: {}
},
treeInit: function(ctx) {
this._superApply(arguments);
initContextMenu(ctx.tree,
ctx.options.contextMenu.selector || "fancytree-title",
ctx.options.contextMenu.menu,
ctx.options.contextMenu.actions);
}
});
}(jQuery, document));