src/Tools/VSCode/extension/src/state_panel.ts
changeset 71473 be84312a2d53
parent 66395 14146fb264d8
child 71475 7a867a38712a
--- a/src/Tools/VSCode/extension/src/state_panel.ts	Tue Feb 25 17:37:22 2020 +0100
+++ b/src/Tools/VSCode/extension/src/state_panel.ts	Tue Feb 25 18:30:08 2020 +0100
@@ -3,8 +3,8 @@
 import * as library from './library'
 import * as protocol from './protocol'
 import { Content_Provider } from './content_provider'
-import { LanguageClient } from 'vscode-languageclient';
-import { Uri, ExtensionContext, workspace, commands, window } from 'vscode'
+import { LanguageClient, VersionedTextDocumentIdentifier } from 'vscode-languageclient';
+import { Uri, ExtensionContext, workspace, commands, window, Webview, WebviewPanel } from 'vscode'
 
 
 /* HTML content */
@@ -34,23 +34,24 @@
 {
   context.subscriptions.push(content_provider.register())
 
+  var panel: WebviewPanel
   language_client = client
   language_client.onNotification(protocol.state_output_type, params =>
     {
       const uri = encode_state(params.id)
-      if (uri) {
-        content_provider.set_content(uri, params.content)
-        content_provider.update(uri)
-
-        const existing_document =
-          workspace.textDocuments.find(document =>
-            document.uri.scheme === uri.scheme &&
-            document.uri.fragment === uri.fragment)
-        if (!existing_document) {
-          const column = library.adjacent_editor_column(window.activeTextEditor, true)
-          commands.executeCommand("vscode.previewHtml", uri, column, "State")
-        }
+      if (!panel) {
+        const column = library.adjacent_editor_column(window.activeTextEditor, true)
+        panel = window.createWebviewPanel(
+          uri.fsPath,
+          "State",
+          column,
+          {
+            enableScripts: true,
+            retainContextWhenHidden: true
+          }
+        );
       }
+      panel.webview.html = params.content;
     })
 }