ah-dashboard-plugin
Version:
Plugin for an ActionHero Dashboard with many functionalities
72 lines (64 loc) • 1.95 kB
JavaScript
/**!
* jquery.fancytree.contextmenu.js
* 3rd party jQuery Context menu extension for jQuery Fancytree
*
* Authors: Rodney Rehm, Addy Osmani (patches for FF)
* Web: http://medialize.github.com/jQuery-contextMenu/
*
* Copyright (c) 2012, Martin Wendt (http://wwWendt.de)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://code.google.com/p/fancytree/wiki/LicenseInfe
*/
(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,
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: "1.0",
contextMenu: {
selector: "fancytree-title",
menu: {},
actions: {}
},
treeInit: function(ctx) {
this._super(ctx);
initContextMenu(ctx.tree,
ctx.options.contextMenu.selector || "fancytree-title",
ctx.options.contextMenu.menu,
ctx.options.contextMenu.actions);
}
});
}(jQuery, document));