1+ import * as vscode from 'vscode' ;
2+ import * as path from 'path' ;
3+
4+ export class GCodeTreeProvider implements vscode . TreeDataProvider < GCodeTreeNode > {
5+
6+ private _onDidChnageTreeData : vscode . EventEmitter < GCodeTreeNode | undefined > = new vscode . EventEmitter < GCodeTreeNode | undefined > ( ) ;
7+ readonly onDidChangeTreeData : vscode . Event < GCodeTreeNode | undefined > = this . _onDidChnageTreeData . event ;
8+
9+ private text : string = '' ;
10+ private autoRefresh : boolean = true ;
11+
12+ constructor ( context : vscode . ExtensionContext ) {
13+
14+ vscode . window . onDidChangeActiveTextEditor ( ( ) => this . onActiveEditorChanged ( ) ) ;
15+
16+
17+ this . onActiveEditorChanged ( ) ;
18+ }
19+
20+ refresh ( ) : void {
21+ this . _onDidChnageTreeData . fire ( ) ;
22+ }
23+
24+ private onActiveEditorChanged ( ) : void {
25+ if ( vscode . window . activeTextEditor ) {
26+ if ( vscode . window . activeTextEditor . document . uri . scheme === 'file' ) {
27+ const enabled = vscode . window . activeTextEditor . document . languageId === 'gcode' ;
28+ vscode . commands . executeCommand ( 'setContext' , 'gcodeTreeEnabled' , enabled ) ;
29+
30+ if ( enabled ) {
31+ this . refresh ( ) ;
32+ }
33+ }
34+ } else {
35+ vscode . commands . executeCommand ( 'setContext' , 'gcodeTreeEnabled' , false ) ;
36+ }
37+ }
38+
39+ private parseTree ( ) : GCodeTreeNode [ ] {
40+
41+ this . text = '' ;
42+ let editor = vscode . window . activeTextEditor ;
43+
44+ if ( editor && editor . document ) {
45+ this . text = editor . document . getText ( ) ;
46+
47+
48+ // TODO PARSE GCODE
49+ } else {
50+ return [ ] ;
51+ }
52+
53+ return [ ] ;
54+ }
55+
56+ getChildren ( element ?: GCodeTreeNode ) : Thenable < GCodeTreeNode [ ] > {
57+ return Promise . resolve ( [ ] ) ;
58+ }
59+
60+ getTreeItem ( element : GCodeTreeNode ) : vscode . TreeItem {
61+ return element ;
62+ }
63+ }
64+
65+ export class GCodeTreeNode extends vscode . TreeItem {
66+
67+ constructor (
68+ public readonly label : string ,
69+ public readonly collapsibleState : vscode . TreeItemCollapsibleState
70+ ) {
71+ super ( label , collapsibleState ) ;
72+ }
73+
74+ // TOOL TIP
75+ get tooltip ( ) : string {
76+ return "tooltip" ;
77+ }
78+
79+ get description ( ) : string {
80+ return "description" ;
81+ }
82+
83+ iconPath = {
84+ light : path . join ( __filename , '..' , '..' , 'resources' , 'light' , 'gcode.svg' ) ,
85+ dark : path . join ( __filename , '..' , '..' , 'resources' , 'dark' , 'gcoode.svg' )
86+ } ;
87+ }
0 commit comments