From 276fb164a3da108f7f49f848fdf060ca5355621d Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Fri, 23 Aug 2019 17:17:32 -0400 Subject: [PATCH] WIP final piece --- .../vscode-spring-boot/lib/live-bean-view.ts | 56 +++++++++++-------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/vscode-extensions/vscode-spring-boot/lib/live-bean-view.ts b/vscode-extensions/vscode-spring-boot/lib/live-bean-view.ts index 395973bcb..a319196f3 100644 --- a/vscode-extensions/vscode-spring-boot/lib/live-bean-view.ts +++ b/vscode-extensions/vscode-spring-boot/lib/live-bean-view.ts @@ -8,7 +8,16 @@ export async function activate(context: vscode.ExtensionContext, client: Languag context.subscriptions.push( vscode.commands.registerCommand('sts4.liveBeans.start', () => { - LiveBeansView.createOrShow(context.extensionPath, client); + vscode.window.showQuickPick([ + 'process-1', + 'process-2', + 'process-3', + ]).then(pick => { + console.log('Pick is: ' + pick); + LiveBeansView.createOrShow(context.extensionPath, client, pick); + + + }) }) ); @@ -21,7 +30,7 @@ class LiveBeansView { /** * Track the currently panel. Only allow a single panel to exist at a time. */ - public static currentPanel: LiveBeansView | undefined; + public static currentPanels: Map = new Map(); public static readonly viewType = 'catCoding'; @@ -29,14 +38,16 @@ class LiveBeansView { private readonly _extensionPath: string; private _disposables: vscode.Disposable[] = []; - public static createOrShow(extensionPath: string, client: LanguageClient) { + private clientId: string; + + public static createOrShow(extensionPath: string, client: LanguageClient, clientId: string) { const column = vscode.window.activeTextEditor ? vscode.window.activeTextEditor.viewColumn : undefined; // If we already have a panel, show it. - if (LiveBeansView.currentPanel) { - LiveBeansView.currentPanel._panel.reveal(column); + if (LiveBeansView.currentPanels.has(clientId)) { + LiveBeansView.currentPanels.get(clientId)._panel.reveal(column); return; } @@ -48,26 +59,25 @@ class LiveBeansView { { // Enable javascript in the webview enableScripts: true, - - - + // And restrict the webview to only loading content from our extension's `media` directory. localResourceRoots: [vscode.Uri.file(path.join(extensionPath, 'media'))] } ); - LiveBeansView.currentPanel = new LiveBeansView(panel, extensionPath); + LiveBeansView.currentPanels.set(clientId, new LiveBeansView(panel, extensionPath, clientId)); console.log('Created webview panel!'); - const bridge: LSWebViewToLSPBridge = new LSWebViewToLSPBridge(panel.webview, client); + const bridge: LSWebViewToLSPBridge = new LSWebViewToLSPBridge(panel, client); panel.webview.onDidReceiveMessage(message => bridge.sendToLs(message)); } - public static revive(panel: vscode.WebviewPanel, extensionPath: string) { - LiveBeansView.currentPanel = new LiveBeansView(panel, extensionPath); - } + // public static revive(panel: vscode.WebviewPanel, extensionPath: string) { + // LiveBeansView.currentPanels.set() = new LiveBeansView(panel, extensionPath); + // } - private constructor(panel: vscode.WebviewPanel, extensionPath: string) { + private constructor(panel: vscode.WebviewPanel, extensionPath: string, clientId: string) { + this.clientId = clientId; this._panel = panel; this._extensionPath = extensionPath; @@ -110,7 +120,7 @@ class LiveBeansView { } public dispose() { - LiveBeansView.currentPanel = undefined; + LiveBeansView.currentPanels.delete(this.clientId); // Clean up our resources this._panel.dispose(); @@ -161,7 +171,7 @@ class LiveBeansView {
-
+

sprotty Circles Example

@@ -175,7 +185,7 @@ class LiveBeansView {

-
+