Skip to content

Commit 48d9a0f

Browse files
Make it easier to add namespace from same server to workspace (#1232)
1 parent 0d8ecb1 commit 48d9a0f

File tree

2 files changed

+42
-11
lines changed

2 files changed

+42
-11
lines changed

src/commands/addServerNamespaceToWorkspace.ts

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ export async function pickServerAndNamespace(message?: string): Promise<{ server
3232
if (!serverName) {
3333
return;
3434
}
35+
const namespace = await pickNamespaceOnServer(serverName);
36+
if (!namespace) {
37+
return;
38+
}
39+
return { serverName, namespace };
40+
}
41+
42+
async function pickNamespaceOnServer(serverName: string): Promise<string> {
3543
// Get its namespace list
3644
const uri = vscode.Uri.parse(`isfs://${serverName}:%sys/`);
3745
await resolveConnectionSpec(serverName);
@@ -69,18 +77,41 @@ export async function pickServerAndNamespace(message?: string): Promise<{ server
6977
placeHolder: `Namespace on server '${serverName}' (${connDisplayString})`,
7078
ignoreFocusOut: true,
7179
});
72-
if (!namespace) {
73-
return;
74-
}
75-
return { serverName, namespace };
80+
return namespace;
7681
}
7782

78-
export async function addServerNamespaceToWorkspace(): Promise<void> {
79-
const picks = await pickServerAndNamespace("Adding a server namespace to a workspace");
80-
if (picks == undefined) {
81-
return;
83+
export async function addServerNamespaceToWorkspace(resource?: vscode.Uri): Promise<void> {
84+
const TITLE = "Add server namespace to workspace";
85+
let serverName = "";
86+
let namespace = "";
87+
if (filesystemSchemas.includes(resource?.scheme)) {
88+
serverName = resource.authority.split(":")[0];
89+
if (serverName) {
90+
const ANOTHER = "Choose another server";
91+
const choice = await vscode.window.showQuickPick([`Add a '${serverName}' namespace`, ANOTHER], {
92+
title: TITLE,
93+
});
94+
if (!choice) {
95+
return;
96+
}
97+
if (choice === ANOTHER) {
98+
serverName = "";
99+
}
100+
}
101+
}
102+
if (serverName === "") {
103+
const picks = await pickServerAndNamespace(TITLE);
104+
if (picks == undefined) {
105+
return;
106+
}
107+
serverName = picks.serverName;
108+
namespace = picks.namespace;
109+
} else {
110+
namespace = await pickNamespaceOnServer(serverName);
111+
if (!namespace) {
112+
return;
113+
}
82114
}
83-
const { serverName, namespace } = picks;
84115
// Prompt the user for edit or read-only
85116
const mode = await vscode.window.showQuickPick(
86117
[

src/extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -990,8 +990,8 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
990990
vscode.commands.registerCommand("vscode-objectscript.previewXml", () => {
991991
xml2doc(context, vscode.window.activeTextEditor);
992992
}),
993-
vscode.commands.registerCommand("vscode-objectscript.addServerNamespaceToWorkspace", () => {
994-
addServerNamespaceToWorkspace();
993+
vscode.commands.registerCommand("vscode-objectscript.addServerNamespaceToWorkspace", (resource?: vscode.Uri) => {
994+
addServerNamespaceToWorkspace(resource);
995995
}),
996996
vscode.commands.registerCommand("vscode-objectscript.connectFolderToServerNamespace", () => {
997997
connectFolderToServerNamespace();

0 commit comments

Comments
 (0)