From 266df86d98e8a9b59cf741d51146b978ca92d946 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Mon, 16 Mar 2020 10:20:48 +0000 Subject: [PATCH] [groups] Add menu options for group actions --- .../@node-red/editor-client/locales/en-US/editor.json | 7 ++++++- .../node_modules/@node-red/editor-client/src/js/red.js | 8 ++++++++ .../@node-red/editor-client/src/js/ui/group.js | 6 ++++++ .../@node-red/editor-client/src/js/ui/view.js | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json index 6c9196577..dfe38b5d1 100755 --- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json @@ -91,7 +91,12 @@ "projects-new": "New", "projects-open": "Open", "projects-settings": "Project Settings", - "showNodeLabelDefault": "Show label of newly added nodes" + "showNodeLabelDefault": "Show label of newly added nodes", + "groups": "Groups", + "groupSelection": "Group selection", + "ungroupSelection": "Ungroup selection", + "groupMergeSelection": "Merge selection", + "groupRemoveSelection": "Remove from group" } }, "actions": { diff --git a/packages/node_modules/@node-red/editor-client/src/js/red.js b/packages/node_modules/@node-red/editor-client/src/js/red.js index 5e4ee34c9..53a9db1df 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/red.js +++ b/packages/node_modules/@node-red/editor-client/src/js/red.js @@ -472,6 +472,14 @@ var RED = (function() { {id:"menu-item-subflow-create",label:RED._("menu.label.createSubflow"),onselect:"core:create-subflow"}, {id:"menu-item-subflow-convert",label:RED._("menu.label.selectionToSubflow"),disabled:true,onselect:"core:convert-to-subflow"}, ]}); + menuOptions.push({id:"menu-item-group",label:RED._("menu.label.groups"), options: [ + {id:"menu-item-group-group",label:RED._("menu.label.groupSelection"),disabled:true,onselect:"core:group-selection"}, + {id:"menu-item-group-ungroup",label:RED._("menu.label.ungroupSelection"),disabled:true,onselect:"core:ungroup-selection"}, + null, + {id:"menu-item-group-merge",label:RED._("menu.label.groupMergeSelection"),disabled:true,onselect:"core:merge-selection-to-group"}, + {id:"menu-item-group-remove",label:RED._("menu.label.groupRemoveSelection"),disabled:true,onselect:"core:remove-selection-from-group"} + ]}); + menuOptions.push(null); if (RED.settings.theme('palette.editable') !== false) { menuOptions.push({id:"menu-item-edit-palette",label:RED._("menu.label.editPalette"),onselect:"core:manage-palette"}); diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/group.js b/packages/node_modules/@node-red/editor-client/src/js/ui/group.js index 605acd9ce..4389c7814 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/group.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/group.js @@ -59,6 +59,12 @@ RED.group = (function() { function init() { + RED.events.on("view:selection-changed",function(selection) { + RED.menu.setDisabled("menu-item-group-group",!!!selection.nodes); + RED.menu.setDisabled("menu-item-group-ungroup",!!!selection.groups); + RED.menu.setDisabled("menu-item-group-merge",!!!selection.nodes); + RED.menu.setDisabled("menu-item-group-remove",!!!selection.groups); + }); RED.actions.add("core:group-selection", function() { groupSelection() }) RED.actions.add("core:ungroup-selection", function() { ungroupSelection() }) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index 6b2603a21..364888b66 100755 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -1724,6 +1724,9 @@ if (DEBUG_EVENTS) { console.warn("clearSelection", mouse_mode); } selection.link = selected_link; } selection.groups = activeGroups.filter(function(g) { return g.selected }) + if (selection.groups.length === 0) { + delete selection.groups; + } activeLinks = RED.nodes.filterLinks({ source:{z:activeWorkspace}, target:{z:activeWorkspace}