diff --git a/Projects/Foundations/Schemas/App-Schema/workspace.json b/Projects/Foundations/Schemas/App-Schema/workspace.json index b6ed175c7..a177c8088 100644 --- a/Projects/Foundations/Schemas/App-Schema/workspace.json +++ b/Projects/Foundations/Schemas/App-Schema/workspace.json @@ -39,6 +39,13 @@ "actionFunction": "payload.executeAction", "relatedUiObjectProject": "Foundations" }, + { + "action": "Add Specified Workspace Project", + "label": "Add Specified Workspace Project", + "relatedUiObject": "Workspace", + "actionFunction": "payload.executeAction", + "relatedUiObjectProject": "Foundations" + }, { "action": "Check For Missing References", "label": "Check For Missing References", @@ -58,7 +65,8 @@ "config": "{\"docsLanguage\": \"EN\"}" }, "editors": { - "config": true + "config": true, + "list": true }, "isTitleAllwaysVisible": true, "addLeftIcons": false, diff --git a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index cd96f06f0..39c5c771c 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -407,6 +407,11 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.workspaceFunctions.addMissingWorkspaceProjects(action.node, action.rootNodes) } break + case 'Add Specified Workspace Project': + { + UI.projects.foundations.functionLibraries.workspaceFunctions.addSpecifiedWorkspaceProject(action.node, action.rootNodes) + } + break case 'Check For Missing References': { UI.projects.foundations.functionLibraries.workspaceFunctions.checkForMissingReferences(action.rootNodes) diff --git a/Projects/Foundations/UI/Function-Libraries/WorkspaceFunctions.js b/Projects/Foundations/UI/Function-Libraries/WorkspaceFunctions.js index bfb539aaf..7eeb1eae7 100644 --- a/Projects/Foundations/UI/Function-Libraries/WorkspaceFunctions.js +++ b/Projects/Foundations/UI/Function-Libraries/WorkspaceFunctions.js @@ -1,6 +1,7 @@ function newFoundationsFunctionLibraryWorkspaceFunctions() { let thisObject = { addMissingWorkspaceProjects: addMissingWorkspaceProjects, + addSpecifiedWorkspaceProject: addSpecifiedWorkspaceProject, checkForMissingReferences: checkForMissingReferences, fixMissingReferences: fixMissingReferences } @@ -32,6 +33,42 @@ function newFoundationsFunctionLibraryWorkspaceFunctions() { } } + function addSpecifiedWorkspaceProject(node, rootNodes) { + let action = { node: node } + let validProjects = PROJECTS_SCHEMA + + // Find the Projects not already part of the Workspace + for (let i = 0; i < PROJECTS_SCHEMA.length; i++) { + let projectDefinition = PROJECTS_SCHEMA[i] + let project = projectDefinition.name + + for (let k = 0; k < rootNodes.length; k++) { + let rootNode = rootNodes[k] + if (rootNode.type === project + ' Project') { + validProjects = validProjects.filter(function(val) { + return val.name + ' Project' !== rootNode.type + }) + } + } + } + + // Create the Projects as an Array + let projectList = [] + + for (let i = 0; i < validProjects.length; i++) { + projectList.push(validProjects[i].name) + } + + let eventSubscriptionId = node.payload.uiObject.container.eventHandler.listenToEvent('listSelectorClicked', onListSelect) + node.payload.uiObject.listSelector.activate(action, projectList, eventSubscriptionId) + + function onListSelect(event) { + UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(node, event.selectedNode + ' Project', rootNodes, event.selectedNode) + node.payload.uiObject.container.eventHandler.stopListening('listSelectorClicked') + } + + } + // This function scales the current workspace and highlights any nodes that have unresolved references function checkForMissingReferences(rootNodes) { let nodes