1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /**!
- * 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._superApply(arguments);
- initContextMenu(ctx.tree,
- ctx.options.contextMenu.selector || "fancytree-title",
- ctx.options.contextMenu.menu,
- ctx.options.contextMenu.actions);
- }
- });
- }(jQuery, document));
|