From 72dfd83cdc77beb185e1f2951b20124043ec0c08 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 4 May 2017 00:55:20 +0400 Subject: [PATCH] allow using checkboxes to enable plugins --- .../lib/ace_tree/mouse/default_handlers.js | 12 ++++++----- plugins/c9.ide.plugins/gui.js | 21 +++++++++++++++++-- plugins/c9.ide.plugins/manager.js | 8 +++---- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js b/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js index b568a458..54247f61 100644 --- a/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js +++ b/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js @@ -137,13 +137,15 @@ function DefaultHandlers(mouseHandler) { } this.$clickNode = null; } else if (dom.hasCssClass(target, "checkbox")) { + var nodes = inSelection && editor.selection.getSelectedNodes(); + provider._signal("toggleCheckbox", { target: node, selectedNodes: nodes }); + // consider deprecating this node.isChecked = !node.isChecked; - if (inSelection) { - var nodes = editor.selection.getSelectedNodes(); - nodes.forEach(function(n){ n.isChecked = node.isChecked }); + if (nodes) { + nodes.forEach(function(n) { n.isChecked = node.isChecked }); } - provider._signal(node.isChecked ? "check" : "uncheck", inSelection ? nodes : [node]); - provider._signal("change") + provider._signal(node.isChecked ? "check" : "uncheck", nodes || [node]); + provider._signal("change"); } else if (dom.hasCssClass(target, "icon-ok")) { if (ev.getShiftKey()) { editor.selection.expandSelection(node, null, true); diff --git a/plugins/c9.ide.plugins/gui.js b/plugins/c9.ide.plugins/gui.js index a2bcb846..fce943db 100644 --- a/plugins/c9.ide.plugins/gui.js +++ b/plugins/c9.ide.plugins/gui.js @@ -629,6 +629,16 @@ define(function(require, exports, module) { showInfo("Path is not available."); }, }), plugin); + menus.addItemByPath("context/pluginManager/Refresh List", new ui.item({ + onclick: function() { + pluginManager.readAvailablePlugins(function(err, available) { + if (err) return console.error(err); + localPlugins = available; + reloadModel(); + }); + }, + }), plugin); + menus.addItemByPath("context/pluginManager/~", new ui.divider({}), plugin); menus.addItemByPath("context/pluginManager/Disable", new ui.item({ isAvailable: function() { var selected = datagrid.selection.getCursor(); @@ -644,9 +654,17 @@ define(function(require, exports, module) { onclick: function() { reloadGridSelection(true); }, }), plugin); menus.addItemByPath("context/pluginManager/Reload", new ui.item({ + isAvailable: function() { + var selected = datagrid.selection.getCursor(); + return selected; + }, onclick: function() { reloadGridSelection(); }, }), plugin); treeBar.setAttribute("contextmenu", mnuCtxTree); + + model.on("toggleCheckbox", function(e) { + reloadGridSelection(!e.target.enabled, e.selectedNodes || [e.target]); + }); } @@ -861,7 +879,6 @@ define(function(require, exports, module) { } } - function updateReloadLastButton() { var last = getLastReloaded(); if (last) { @@ -880,7 +897,7 @@ define(function(require, exports, module) { return; } } - showInfo("Loaded " + name + " for the duration of current browser session.", 1000); + showInfo("Loaded " + name + " for the duration of current browser session.", 3000); } function getLastReloaded() { diff --git a/plugins/c9.ide.plugins/manager.js b/plugins/c9.ide.plugins/manager.js index 5ea0d9a0..266fcc4b 100644 --- a/plugins/c9.ide.plugins/manager.js +++ b/plugins/c9.ide.plugins/manager.js @@ -1,8 +1,7 @@ /*global requirejs*/ define(function(require, exports, module) { main.consumes = [ - "app", "ext", "c9", "Plugin", "proc", "fs", "tree", "vfs", - "dialog.error", "tree.favorites" + "app", "ext", "c9", "Plugin", "proc", "fs", "vfs", "dialog.error" ]; main.provides = ["pluginManager", "plugin.manager", "plugin.debug"]; return main; @@ -12,13 +11,11 @@ define(function(require, exports, module) { var c9 = imports.c9; var fs = imports.fs; var ext = imports.ext; - var tree = imports.tree; var proc = imports.proc; var Plugin = imports.Plugin; var util = imports.util; var vfs = imports.vfs; var showError = imports["dialog.error"].show; - var favs = imports["tree.favorites"]; var architectApp = imports.app; var join = require("path").join; @@ -125,6 +122,9 @@ define(function(require, exports, module) { // Remove .tar.gz fs.unlink(tarPath, function() { + // using this to allow reloading the tree + var tree = architectApp.services["tree"]; + var favs = architectApp.services["tree.favorites"]; // Add plugin to favorites favs.addFavorite(dirname(pluginsDir), "plugins");