add context menu for panels

pull/117/merge
nightwing 2015-08-03 23:28:18 +04:00
rodzic 4d2e522290
commit 76ee1e289c
2 zmienionych plików z 26 dodań i 4 usunięć

Wyświetl plik

@ -1,5 +1,5 @@
define(function(require, module, exports) {
main.consumes = ["Plugin", "layout", "settings", "anims", "ui"];
main.consumes = ["Plugin", "layout", "settings", "anims", "ui", "menus"];
main.provides = ["panels.Area"];
return main;
@ -8,6 +8,7 @@ define(function(require, module, exports) {
var layout = imports.layout;
var anims = imports.anims;
var ui = imports.ui;
var menus = imports.menus;
var settings = imports.settings;
var uCaseFirst = require("c9/string").uCaseFirst;
@ -43,6 +44,23 @@ define(function(require, module, exports) {
column.setWidth(CURWIDTH);
column.setAttribute("class", where);
column.oncontextmenu = function(e) {
var menu = menus.get("Window").menu;
menu.display(e.x, e.y);
menu.childNodes.forEach(function(x) {
if (x.visible && !x.panel) {
x.hide();
menu.on("prop.visible", function show(e) {
if (!e.value) {
menu.off("prop.visible", show);
x.show();
}
});
}
});
return false;
};
// Prevent scrolling
column.$int.addEventListener("scroll", function(e){
column.$int.scrollTop = 0;

Wyświetl plik

@ -46,8 +46,11 @@ define(function(require, module, exports) {
area.enablePanel(plugin.name);
else
area.disablePanel(plugin.name);
}
},
});
mnuItem.panel = plugin;
menus.addItemByPath("Window/" + caption, mnuItem, index, plugin);
panels.on("showPanel" + uCaseFirst(plugin.name), function(e) {
@ -206,9 +209,10 @@ define(function(require, module, exports) {
caption: caption,
auto: false,
"class" : buttonCSSClass || "",
onmousedown: function(){
onmousedown: function(e){
if (e.htmlEvent && e.htmlEvent.button) return;
panels.areas[where].toggle(plugin.name, autohide, true);
},
}
});
plugin.addElement(button);
}