@@ -32,6 +32,14 @@ export async function pickServerAndNamespace(message?: string): Promise<{ server
32
32
if ( ! serverName ) {
33
33
return ;
34
34
}
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 > {
35
43
// Get its namespace list
36
44
const uri = vscode . Uri . parse ( `isfs://${ serverName } :%sys/` ) ;
37
45
await resolveConnectionSpec ( serverName ) ;
@@ -69,18 +77,41 @@ export async function pickServerAndNamespace(message?: string): Promise<{ server
69
77
placeHolder : `Namespace on server '${ serverName } ' (${ connDisplayString } )` ,
70
78
ignoreFocusOut : true ,
71
79
} ) ;
72
- if ( ! namespace ) {
73
- return ;
74
- }
75
- return { serverName, namespace } ;
80
+ return namespace ;
76
81
}
77
82
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
+ }
82
114
}
83
- const { serverName, namespace } = picks ;
84
115
// Prompt the user for edit or read-only
85
116
const mode = await vscode . window . showQuickPick (
86
117
[
0 commit comments