Skip to content

Commit b627874

Browse files
committed
multi select in explorer view for mass export
1 parent b17c479 commit b627874

File tree

5 files changed

+23
-17
lines changed

5 files changed

+23
-17
lines changed

src/commands/export.ts

+5-7
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@ import fs = require("fs");
22
import path = require("path");
33
import * as vscode from "vscode";
44
import { AtelierAPI } from "../api";
5-
import { ClassNode } from "../explorer/models/classesNode";
6-
import { PackageNode } from "../explorer/models/packageNode";
7-
import { RootNode } from "../explorer/models/rootNode";
8-
import { RoutineNode } from "../explorer/models/routineNode";
95
import { config } from "../extension";
106
import { mkdirSyncRecursive, notNull, outputChannel, workspaceFolderUri } from "../utils";
7+
import { NodeBase } from "../explorer/models/nodeBase";
118

129
const filesFilter = (file: any) => {
1310
if (file.cat === "CSP" || file.name.startsWith("%") || file.name.startsWith("INFORMATION.")) {
@@ -189,8 +186,9 @@ export async function exportAll(workspaceFolder?: string): Promise<any> {
189186
});
190187
}
191188

192-
export async function exportExplorerItem(node: RootNode | PackageNode | ClassNode | RoutineNode): Promise<any> {
189+
export async function exportExplorerItem(nodes: NodeBase[]): Promise<any> {
193190
const origNamespace = config("conn").ns;
191+
const node = nodes[0];
194192
if (origNamespace !== node.namespace) {
195193
const answer = await vscode.window.showWarningMessage(
196194
`
@@ -206,7 +204,7 @@ Would you like to continue?`,
206204
}
207205
}
208206
const { workspaceFolder, namespace } = node;
209-
return node.getItems4Export().then(items => {
210-
return exportList(items, workspaceFolder, namespace);
207+
return Promise.all(nodes.map(node => node.getItems4Export())).then(items => {
208+
return exportList(items.flat(), workspaceFolder, namespace);
211209
});
212210
}

src/commands/studio.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class StudioActions {
5454
}
5555
}
5656

57-
private userAction(action, afterUserAction = false, answer: string = "", msg: string = ""): Thenable<void> {
57+
private userAction(action, afterUserAction = false, answer = "", msg = ""): Thenable<void> {
5858
if (!action) {
5959
return;
6060
}

src/commands/xml2doc.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import * as vscode from "vscode";
2-
import { config, OBJECTSCRIPTXML_FILE_SCHEMA } from "../extension";
3-
import { XmlContentProvider } from "../providers/XmlContentProvider";
2+
import { config, OBJECTSCRIPTXML_FILE_SCHEMA, xmlContentProvider } from "../extension";
43

54
export async function xml2doc(context: vscode.ExtensionContext, textEditor: vscode.TextEditor): Promise<void> {
6-
const xmlContentProvider: XmlContentProvider = context.workspaceState.get("xmlContentProvider");
75
if (!config("conn").active) {
86
return;
97
}

src/extension.ts

+12-5
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export let extensionContext: vscode.ExtensionContext;
6464
export let panel: vscode.StatusBarItem;
6565
export let posPanel: vscode.StatusBarItem;
6666
export let terminal: vscode.Terminal;
67+
export let xmlContentProvider: XmlContentProvider;
6768

6869
import TelemetryReporter from "vscode-extension-telemetry";
6970
import { CodeActionProvider } from "./providers/CodeActionProvider";
@@ -214,13 +215,17 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
214215
extensionContext = context;
215216
workspaceState.update("workspaceFolder", "");
216217

217-
explorerProvider = new ObjectScriptExplorerProvider();
218218
documentContentProvider = new DocumentContentProvider();
219-
const xmlContentProvider = new XmlContentProvider();
220-
context.workspaceState.update("xmlContentProvider", xmlContentProvider);
219+
xmlContentProvider = new XmlContentProvider();
221220
fileSystemProvider = new FileSystemProvider();
222221

223-
vscode.window.registerTreeDataProvider("ObjectScriptExplorer", explorerProvider);
222+
explorerProvider = new ObjectScriptExplorerProvider();
223+
// vscode.window.registerTreeDataProvider("ObjectScriptExplorer", explorerProvider);
224+
vscode.window.createTreeView("ObjectScriptExplorer", {
225+
treeDataProvider: explorerProvider,
226+
showCollapseAll: true,
227+
canSelectMany: true,
228+
});
224229

225230
posPanel = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 0);
226231
posPanel.show();
@@ -366,7 +371,9 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
366371
vscode.commands.registerCommand("vscode-objectscript.explorer.refresh", () => explorerProvider.refresh()),
367372
vscode.commands.registerCommand("vscode-objectscript.explorer.openClass", vscode.window.showTextDocument),
368373
vscode.commands.registerCommand("vscode-objectscript.explorer.openRoutine", vscode.window.showTextDocument),
369-
vscode.commands.registerCommand("vscode-objectscript.explorer.export", exportExplorerItem),
374+
vscode.commands.registerCommand("vscode-objectscript.explorer.export", (item, items) =>
375+
exportExplorerItem(items && items.length ? items : [item])
376+
),
370377
vscode.commands.registerCommand("vscode-objectscript.explorer.delete", deleteItem),
371378
vscode.commands.registerCommand("vscode-objectscript.explorer.compile", compileExplorerItem),
372379
vscode.commands.registerCommand("vscode-objectscript.explorer.showGenerated", (workspaceNode: WorkspaceNode) => {

src/languageConfiguration.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ export const WORD_PATTERN = /((?<=(class|extends|as|of) )(%?\b[a-z0-9]+(\.[a-z0-
55
export function getLanguageConfiguration(lang: string): LanguageConfiguration {
66
return {
77
wordPattern: WORD_PATTERN,
8-
brackets: [["{", "}"], ["(", ")"], ['"', '"']],
8+
brackets: [
9+
["{", "}"],
10+
["(", ")"],
11+
],
912
comments: {
1013
lineComment: lang === "class" ? "//" : "#;",
1114
blockComment: ["/*", "*/"],

0 commit comments

Comments
 (0)