@@ -9,6 +9,51 @@ import * as pathExists from "path-exists";
99import * as request from "request-promise-native" ;
1010import findJavaHome = require( "find-java-home" ) ;
1111import architecture = require( "arch" ) ;
12+ import { loadTextFromFile , getExtensionContext } from "../utils" ;
13+
14+ let javaRuntimeView : vscode . WebviewPanel | undefined ;
15+
16+ export async function javaRuntimeCmdHandler ( context : vscode . ExtensionContext , operationId : string ) {
17+ if ( javaRuntimeView ) {
18+ javaRuntimeView . reveal ( ) ;
19+ return ;
20+ }
21+
22+ javaRuntimeView = vscode . window . createWebviewPanel ( "java.runtime" , "Java Runtime" , {
23+ viewColumn : vscode . ViewColumn . One ,
24+ } , {
25+ enableScripts : true ,
26+ enableCommandUris : true ,
27+ retainContextWhenHidden : true
28+ } ) ;
29+
30+ await initializeJavaRuntimeView ( context , javaRuntimeView , onDidDisposeWebviewPanel ) ;
31+ }
32+
33+ function onDidDisposeWebviewPanel ( ) {
34+ javaRuntimeView = undefined ;
35+ }
36+
37+ async function initializeJavaRuntimeView ( context : vscode . ExtensionContext , webviewPanel : vscode . WebviewPanel , onDisposeCallback : ( ) => void ) {
38+ webviewPanel . iconPath = vscode . Uri . file ( path . join ( context . extensionPath , "logo.lowres.png" ) ) ;
39+ const resourceUri = context . asAbsolutePath ( "./out/assets/java-runtime/index.html" ) ;
40+ webviewPanel . webview . html = await loadTextFromFile ( resourceUri ) ;
41+
42+ context . subscriptions . push ( webviewPanel . onDidDispose ( onDisposeCallback ) ) ;
43+ }
44+
45+ export class JavaRuntimeViewSerializer implements vscode . WebviewPanelSerializer {
46+ async deserializeWebviewPanel ( webviewPanel : vscode . WebviewPanel , state : any ) {
47+ if ( javaRuntimeView ) {
48+ javaRuntimeView . reveal ( ) ;
49+ webviewPanel . dispose ( ) ;
50+ return ;
51+ }
52+
53+ javaRuntimeView = webviewPanel ;
54+ initializeJavaRuntimeView ( getExtensionContext ( ) , webviewPanel , onDidDisposeWebviewPanel ) ;
55+ }
56+ }
1257
1358const isWindows = process . platform . indexOf ( "win" ) === 0 ;
1459const JAVAC_FILENAME = path . join ( "bin" , "javac" + ( isWindows ? ".exe" : "" ) ) ;
0 commit comments