@@ -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 [
0 commit comments