@@ -6,74 +6,70 @@ const $ = require("jquery");
66import * as React from "react" ;
77import * as ReactDOM from "react-dom" ;
88import "../../assets/vscode.scss" ;
9- import { JavaRuntimeEntry , JdkData , ProjectRuntimeEntry } from "../types" ;
109import { JdkConfigurationPanel } from "./jdk.configure" ;
1110import { JdkInstallationPanel } from "./jdk.installation" ;
12- import { requestJdkInfo } from "./vscode.api" ;
11+ import { onWillListRuntimes , requestJdkInfo } from "./vscode.api" ;
1312import bytes = require( "bytes" ) ;
1413import "./style.scss" ;
1514
16- window . addEventListener ( "message" , event => {
17- if ( event . data . command === "applyJdkInfo" ) {
18- applyJdkInfo ( event . data . jdkInfo ) ;
19- } else if ( event . data . command === "showJavaRuntimeEntries" ) {
20- showJavaRuntimeEntries ( event . data . args ) ;
15+ const onInitialize = ( event : any ) => {
16+ const { data } = event ;
17+ if ( data . command === "applyJdkInfo" ) {
18+ applyJdkInfo ( data . jdkInfo ) ;
19+ } else if ( data . command === "showJavaRuntimeEntries" ) {
20+ showJavaRuntimeEntries ( data . args ) ;
2121 }
22- } ) ;
22+ } ;
2323
24- let jdkEntries : JavaRuntimeEntry [ ] | undefined ;
25- let projectRuntimes : ProjectRuntimeEntry [ ] | undefined ;
26- let javaHomeError : any ;
27- let javaDotHome : string | undefined ;
28- function showJavaRuntimeEntries ( args : {
29- javaRuntimes ?: JavaRuntimeEntry [ ] ;
30- projectRuntimes ?: ProjectRuntimeEntry [ ] ;
31- javaHomeError ?: string ;
32- javaDotHome ?: string ;
33- } ) {
34- jdkEntries = args . javaRuntimes ;
35- projectRuntimes = args . projectRuntimes ;
36- javaHomeError = args . javaHomeError ;
37- javaDotHome = args . javaDotHome ;
38- render ( ) ;
24+ window . addEventListener ( "message" , onInitialize ) ;
25+ renderLoadingPage ( ) ;
26+ onWillListRuntimes ( ) ;
27+
28+ /**
29+ * Listing runtime can be slow, show loading page immediately after opening webview
30+ */
31+ function renderLoadingPage ( ) {
32+ ReactDOM . render ( React . createElement ( JdkConfigurationPanel ) , document . getElementById ( "jdkConfigurationPanel" ) ) ;
33+ ReactDOM . render ( React . createElement ( JdkInstallationPanel ) , document . getElementById ( "jdkInstallationPanel" ) ) ;
3934}
4035
41- let jdkData : JdkData ;
36+ function showJavaRuntimeEntries ( args : any ) {
37+ const props = {
38+ jdkEntries : args . javaRuntimes ,
39+ projectRuntimes : args . projectRuntimes ,
40+ javaHomeError : args . javaHomeError ,
41+ javaDotHome : args . javaDotHome
42+ } ;
43+ ReactDOM . render ( React . createElement ( JdkConfigurationPanel , props ) , document . getElementById ( "jdkConfigurationPanel" ) ) ;
44+ registerTabSwitchEvents ( ) ;
45+ }
4246
4347function applyJdkInfo ( jdkInfo : any ) {
4448 let binary = jdkInfo . binaries [ 0 ] ;
4549 let downloadLink = binary . installer_link || binary . binary_link ;
4650 let encodedLink = `command:java.helper.openUrl?${ encodeURIComponent ( JSON . stringify ( downloadLink ) ) } ` ;
4751
48- jdkData = {
52+ const jdkData = {
4953 name : jdkInfo . release_name ,
5054 os : binary . os ,
5155 arch : binary . architecture ,
5256 size : bytes ( binary . binary_size , { unitSeparator : " " } ) ,
5357 downloadLink : encodedLink
5458 } ;
5559
56- render ( ) ;
57- }
58-
59- function render ( ) {
6060 const props = {
61- jdkEntries : jdkEntries ,
62- projectRuntimes : projectRuntimes ,
63- jdkData : jdkData ,
64- onRequestJdk : requestJdkInfo ,
65- javaHomeError,
66- javaDotHome
61+ jdkData,
62+ onRequestJdk : requestJdkInfo
6763 } ;
6864
69- ReactDOM . render ( React . createElement ( JdkConfigurationPanel , props ) , document . getElementById ( "jdkConfigurationPanel" ) ) ;
7065 ReactDOM . render ( React . createElement ( JdkInstallationPanel , props ) , document . getElementById ( "jdkInstallationPanel" ) ) ;
66+ }
7167
68+ /**
69+ * To remove after we retire jQuery from this page/
70+ */
71+ function registerTabSwitchEvents ( ) {
7272 $ ( "a.navigation" ) . click ( ( e : any ) => {
7373 ( $ ( $ ( e . target ) . attr ( "href" ) || "" ) as any ) . tab ( "show" ) ;
7474 } ) ;
75-
7675}
77-
78- render ( ) ;
79-
0 commit comments