@@ -8,9 +8,7 @@ import { highlightRange, openFile } from '../services/editor';
88 */
99export class LiquidJavaWebviewProvider implements vscode . WebviewViewProvider {
1010 public static readonly viewType = "liquidJavaView" ;
11- public static readonly panelType = "liquidJavaPanel" ;
1211 private view ?: vscode . WebviewView ;
13- private panel ?: vscode . WebviewPanel ;
1412 private messageEmitter = new vscode . EventEmitter < any > ( ) ;
1513 public readonly onDidReceiveMessage = this . messageEmitter . event ;
1614
@@ -22,7 +20,25 @@ export class LiquidJavaWebviewProvider implements vscode.WebviewViewProvider {
2220 _token : vscode . CancellationToken
2321 ) {
2422 this . view = webviewView ;
25- this . initializeWebview ( webviewView . webview ) ;
23+ webviewView . webview . options = {
24+ enableScripts : true ,
25+ localResourceRoots : [ this . extensionUri ]
26+ } ;
27+ webviewView . webview . html = this . getHtml ( webviewView . webview ) ;
28+
29+ // listen for messages coming from webview
30+ webviewView . webview . onDidReceiveMessage ( message => {
31+ // emit the message to any external listeners
32+ this . messageEmitter . fire ( message ) ;
33+
34+ // handle message
35+ if ( message . type === "openFile" ) {
36+ openFile ( message . filePath , message . line , message . character , message . highlightRange ) ;
37+ } else if ( message . type === "highlight" ) {
38+ // highlight the specified range in the current editor
39+ highlightRange ( vscode . window . activeTextEditor , message . range ) ;
40+ }
41+ } ) ;
2642 }
2743
2844 /**
@@ -31,37 +47,14 @@ export class LiquidJavaWebviewProvider implements vscode.WebviewViewProvider {
3147 */
3248 public sendMessage ( message : any ) {
3349 this . view ?. webview . postMessage ( message ) ;
34- this . panel ?. webview . postMessage ( message ) ;
3550 }
3651
3752 /**
3853 * Checks if the webview is currently visible
3954 * @returns true if the webview is visible, false otherwise
4055 */
4156 public isVisible ( ) : boolean {
42- return ( this . view ?. visible ?? false ) || ( this . panel ?. visible ?? false ) ;
43- }
44-
45- public showPanel ( ) {
46- if ( this . panel ) {
47- this . panel . reveal ( vscode . ViewColumn . Beside ) ;
48- return ;
49- }
50-
51- this . panel = vscode . window . createWebviewPanel (
52- LiquidJavaWebviewProvider . panelType ,
53- "LiquidJava" ,
54- vscode . ViewColumn . Beside ,
55- {
56- enableScripts : true ,
57- localResourceRoots : [ this . extensionUri ]
58- }
59- ) ;
60-
61- this . initializeWebview ( this . panel . webview ) ;
62- this . panel . onDidDispose ( ( ) => {
63- this . panel = undefined ;
64- } ) ;
57+ return this . view ?. visible ?? false ;
6558 }
6659
6760 /**
@@ -72,26 +65,4 @@ export class LiquidJavaWebviewProvider implements vscode.WebviewViewProvider {
7265 private getHtml ( webview : vscode . Webview ) : string {
7366 return getHtml ( webview , this . extensionUri ) ;
7467 }
75-
76- private initializeWebview ( webview : vscode . Webview ) {
77- webview . options = {
78- enableScripts : true ,
79- localResourceRoots : [ this . extensionUri ]
80- } ;
81- webview . html = this . getHtml ( webview ) ;
82-
83- // listen for messages coming from webview
84- webview . onDidReceiveMessage ( message => {
85- // emit the message to any external listeners
86- this . messageEmitter . fire ( message ) ;
87-
88- // handle message
89- if ( message . type === "openFile" ) {
90- openFile ( message . filePath , message . line , message . character , message . highlightRange ) ;
91- } else if ( message . type === "highlight" ) {
92- // highlight the specified range in the current editor
93- highlightRange ( vscode . window . activeTextEditor , message . range ) ;
94- }
95- } ) ;
96- }
9768}
0 commit comments