diff --git a/editor/js/nodes.js b/editor/js/nodes.js index fe9314c6c..81fec9de1 100644 --- a/editor/js/nodes.js +++ b/editor/js/nodes.js @@ -272,6 +272,12 @@ RED.nodes = (function() { function addWorkspace(ws) { workspaces[ws.id] = ws; + ws._def = { + defaults: { + label: {value:""} + } + }; + workspacesOrder.push(ws.id); } function getWorkspace(id) { diff --git a/editor/js/ui/tray.js b/editor/js/ui/tray.js index 1f304dec8..e68e4273f 100644 --- a/editor/js/ui/tray.js +++ b/editor/js/ui/tray.js @@ -47,7 +47,13 @@ RED.tray = (function() { b.html(button.text); } if (button.click) { - b.click(button.click); + b.click((function(action) { + return function(evt) { + if (!$(this).hasClass('disabled')) { + action(evt); + } + }; + })(button.click)); } if (button.class) { b.addClass(button.class); diff --git a/editor/js/ui/workspaces.js b/editor/js/ui/workspaces.js index de349847d..cdf66f939 100644 --- a/editor/js/ui/workspaces.js +++ b/editor/js/ui/workspaces.js @@ -38,47 +38,91 @@ RED.workspaces = (function() { RED.nodes.dirty(true); } } - function deleteWorkspace(ws,force) { + function deleteWorkspace(ws) { if (workspace_tabs.count() == 1) { return; } - var nodes = []; - if (!force) { - nodes = RED.nodes.filterNodes({z:ws.id}); - } - if (force || nodes.length === 0) { - removeWorkspace(ws); - var historyEvent = RED.nodes.removeWorkspace(ws.id); - historyEvent.t = 'delete'; - historyEvent.dirty = RED.nodes.dirty(); - historyEvent.workspaces = [ws]; - RED.history.push(historyEvent); - RED.nodes.dirty(true); - RED.sidebar.config.refresh(); - } else { - $( "#node-dialog-delete-workspace" ).dialog('option','workspace',ws); - $( "#node-dialog-delete-workspace-content" ).text(RED._("workspace.delete",{label:ws.label})); - $( "#node-dialog-delete-workspace" ).dialog('open'); - } + removeWorkspace(ws); + var historyEvent = RED.nodes.removeWorkspace(ws.id); + historyEvent.t = 'delete'; + historyEvent.dirty = RED.nodes.dirty(); + historyEvent.workspaces = [ws]; + RED.history.push(historyEvent); + RED.nodes.dirty(true); + RED.sidebar.config.refresh(); } + function showRenameWorkspaceDialog(id) { - var ws = RED.nodes.workspace(id); - $( "#node-dialog-rename-workspace" ).dialog("option","workspace",ws); - - if (workspace_tabs.count() == 1) { - $( "#node-dialog-rename-workspace").next().find(".leftButton") - .prop('disabled',true) - .addClass("ui-state-disabled"); - } else { - $( "#node-dialog-rename-workspace").next().find(".leftButton") - .prop('disabled',false) - .removeClass("ui-state-disabled"); + var workspace = RED.nodes.workspace(id); + RED.view.state(RED.state.EDITING); + var trayOptions = { + title: RED._("workspace.editFlow",{name:workspace.label}), + buttons: [ + { + id: "node-dialog-delete", + class: 'leftButton'+((workspace_tabs.count() == 1)?" disabled":""), + text: RED._("common.label.delete"), //'', + click: function() { + deleteWorkspace(workspace); + RED.tray.close(); + } + }, + { + id: "node-dialog-cancel", + text: RED._("common.label.cancel"), + click: function() { + RED.tray.close(); + } + }, + { + id: "node-dialog-ok", + class: "primary", + text: RED._("common.label.done"), + click: function() { + var label = $( "#node-input-name" ).val(); + if (workspace.label != label) { + var changes = { + label:workspace.label + } + var historyEvent = { + t: "edit", + changes:changes, + node: workspace, + dirty: RED.nodes.dirty() + } + console.log(workspace); + RED.history.push(historyEvent); + workspace_tabs.renameTab(workspace.id,label); + RED.nodes.dirty(true); + RED.sidebar.config.refresh(); + $("#menu-item-workspace-menu-"+workspace.id.replace(".","-")).text(label); + } + RED.tray.close(); + } + } + ], + open: function(tray) { + var trayBody = tray.find('.editor-tray-body'); + var dialogForm = $('
').appendTo(trayBody); + $('