Skip to content

Commit d734077

Browse files
committed
show system menuItem moved to serverNode in explorer
1 parent 5fd2e73 commit d734077

File tree

5 files changed

+36
-17
lines changed

5 files changed

+36
-17
lines changed

Diff for: explorer/explorer.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export class ObjectScriptExplorerProvider implements vscode.TreeDataProvider<Nod
99
private _onDidChangeTreeData: vscode.EventEmitter<NodeBase> = new vscode.EventEmitter<NodeBase>();
1010
readonly onDidChangeTreeData: vscode.Event<NodeBase> = this._onDidChangeTreeData.event;
1111
private _showSystem = false;
12+
private _showSystem4Workspace: boolean[] = [];
1213

1314
constructor() {}
1415

@@ -21,6 +22,11 @@ export class ObjectScriptExplorerProvider implements vscode.TreeDataProvider<Nod
2122
this._onDidChangeTreeData.fire(null);
2223
}
2324

25+
showSystem4Workspace(workspaceFolder: string, value: boolean) {
26+
this._showSystem4Workspace[workspaceFolder] = value;
27+
this._onDidChangeTreeData.fire(null);
28+
}
29+
2430
refresh(): void {
2531
this._onDidChangeTreeData.fire(null);
2632
}
@@ -47,7 +53,7 @@ export class ObjectScriptExplorerProvider implements vscode.TreeDataProvider<Nod
4753
node = new WorkspaceNode(workspaceFolder.name, this._onDidChangeTreeData);
4854
rootNodes.push(node);
4955

50-
if (this.showSystem) {
56+
if (this.showSystem || this._showSystem4Workspace[workspaceFolder.name]) {
5157
node = new WorkspaceNode(workspaceFolder.name, this._onDidChangeTreeData, true);
5258
rootNodes.push(node);
5359
}

Diff for: explorer/models/workspaceNode.ts

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { config } from '../../extension';
88
export class WorkspaceNode extends NodeBase {
99
private _conn: any;
1010
private _namespace: string;
11+
showSystem: boolean;
1112

1213
constructor(
1314
public readonly label: string,
@@ -26,6 +27,7 @@ export class WorkspaceNode extends NodeBase {
2627
getTreeItem(): vscode.TreeItem {
2728
return {
2829
label: `${this.label}${this._showSystem ? ' - System' : ''}`,
30+
contextValue: `serverNode${this._showSystem ? 'System' : ''}`,
2931
collapsibleState: vscode.TreeItemCollapsibleState.Expanded
3032
};
3133
}

Diff for: extension.ts

+18-7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { XmlContentProvider } from './providers/XmlContentProvider';
2222
import { ObjectScriptExplorerProvider } from './explorer/explorer';
2323
import { outputChannel, currentWorkspaceFolder } from './utils';
2424
import { AtelierAPI } from './api';
25+
import { WorkspaceNode } from './explorer/models/workspaceNode';
2526
export var explorerProvider: ObjectScriptExplorerProvider;
2627
export var documentContentProvider: DocumentContentProvider;
2728
export var workspaceState: vscode.Memento;
@@ -31,7 +32,9 @@ export const config = (config?: string, workspaceFolderName?: string): any => {
3132

3233
if (['conn'].includes(config)) {
3334
if (workspaceFolderName !== '') {
34-
const workspaceFolder = vscode.workspace.workspaceFolders.find(el => el.name === workspaceFolderName);
35+
const workspaceFolder = vscode.workspace.workspaceFolders.find(
36+
el => el.name.toLowerCase() === workspaceFolderName.toLowerCase()
37+
);
3538
return vscode.workspace.getConfiguration('objectscript', workspaceFolder.uri).get(config);
3639
} else {
3740
return vscode.workspace.getConfiguration('objectscript', null).get(config);
@@ -130,13 +133,21 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
130133
vscode.commands.registerCommand('vscode-objectscript.explorer.openClass', vscode.window.showTextDocument),
131134
vscode.commands.registerCommand('vscode-objectscript.explorer.openRoutine', vscode.window.showTextDocument),
132135
vscode.commands.registerCommand('vscode-objectscript.explorer.export', exportExplorerItem),
133-
vscode.commands.registerCommand('vscode-objectscript.explorer.showSystem', () => {
134-
vscode.commands.executeCommand('setContext', 'vscode-objectscript.explorer.showSystem', true);
135-
explorerProvider.showSystem = true;
136+
vscode.commands.registerCommand('vscode-objectscript.explorer.showSystem', (workspaceNode?: WorkspaceNode) => {
137+
if (workspaceNode) {
138+
explorerProvider.showSystem4Workspace(workspaceNode.label, true);
139+
} else {
140+
vscode.commands.executeCommand('setContext', 'vscode-objectscript.explorer.showSystem', true);
141+
explorerProvider.showSystem = true;
142+
}
136143
}),
137-
vscode.commands.registerCommand('vscode-objectscript.explorer.hideSystem', () => {
138-
vscode.commands.executeCommand('setContext', 'vscode-objectscript.explorer.showSystem', false);
139-
explorerProvider.showSystem = false;
144+
vscode.commands.registerCommand('vscode-objectscript.explorer.hideSystem', (workspaceNode?) => {
145+
if (workspaceNode) {
146+
explorerProvider.showSystem4Workspace(workspaceNode.label, false);
147+
} else {
148+
vscode.commands.executeCommand('setContext', 'vscode-objectscript.explorer.showSystem', false);
149+
explorerProvider.showSystem = false;
150+
}
140151
}),
141152
vscode.commands.registerCommand('vscode-objectscript.previewXml', (...args) => {
142153
xml2doc(context, window.activeTextEditor);

Diff for: package.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,6 @@
9191
"command": "vscode-objectscript.explorer.refresh",
9292
"when": "view == ObjectScriptExplorer",
9393
"group": "navigation"
94-
},
95-
{
96-
"command": "vscode-objectscript.explorer.showSystem",
97-
"when": "view == ObjectScriptExplorer && !vscode-objectscript.explorer.showSystem"
98-
},
99-
{
100-
"command": "vscode-objectscript.explorer.hideSystem",
101-
"when": "view == ObjectScriptExplorer && vscode-objectscript.explorer.showSystem"
10294
}
10395
],
10496
"view/item/context": [
@@ -113,6 +105,14 @@
113105
{
114106
"command": "vscode-objectscript.explorer.export",
115107
"when": "view == ObjectScriptExplorer && viewItem == routineNode"
108+
},
109+
{
110+
"command": "vscode-objectscript.explorer.showSystem",
111+
"when": "view == ObjectScriptExplorer && viewItem == serverNode"
112+
},
113+
{
114+
"command": "vscode-objectscript.explorer.hideSystem",
115+
"when": "view == ObjectScriptExplorer && viewItem == serverNodeSystem"
116116
}
117117
],
118118
"editor/context": [

Diff for: utils/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,5 @@ export function currentWorkspaceFolder(): string {
8585
}
8686

8787
export function workspaceFolderUri(workspaceFolder: string): vscode.Uri {
88-
return vscode.workspace.workspaceFolders.find(el => el.name === workspaceFolder).uri;
88+
return vscode.workspace.workspaceFolders.find(el => el.name.toLowerCase() === workspaceFolder.toLowerCase()).uri;
8989
}

0 commit comments

Comments
 (0)