0.0.6 • Published 5 years ago

vscode-extension-decorator v0.0.6

Weekly downloads
17
License
GPL-3.0
Repository
github
Last release
5 years ago

Visual Studio Code Decorator

The decorators for Visual Studio Code.

npm install vscode-extension-decorator --save-dev

How to use:

import * as vscode from "vscode";

import {
  IWebviewProvider,
  IWebviewWrapper,
  Command,
  Event,
  Extension,
  TextDocumentContentProvider,
  TreeDataProvider,
  Subscriber,
  WebviewPanel,
  WebviewProvider
} from "vscode-extension-decorator";

class ExampleContentProvider implements TextDocumentContentProvider {
  provideTextDocumentContent(uri: vscode.Uri): string | vscode.ProviderResult<string> {
    return "Hello World";
  }
}

class ExampleTreeProvider implements TreeDataProvider<vscode.TreeItem> {
  getChildren(element?: vscode.TreeItem): vscode.TreeItem[] {
    if (element) {
      return [];
    } else {
      return [ new vscode.TreeItem("Hello World") ];
    }
  }
}

@WebviewProvider
export default class ExampleWebviewProvider implements IWebviewProvider {
  wrapper?: IWebviewWrapper;
  wrapperClass?: Object;

  static show(data?: any) {
    (WebviewProvider as any).reveal(vscode.ViewColumn.One, data);
  }

  createWebviewPanel(): WebviewPanel {
    return vscode.window.createWebviewPanel(
      "ExampleWebview",
      "Example Webview",
      vscode.ViewColumn.One,
      {
        enableScripts: true
      }
    );
  }

  didReceiveMessageHandle(message: any) {
    // handle the message here
  }

  getHtmlContent(data?: any): string {
    return `<html>
    <body>
    <h1>Hello World</h1>
    </body>
    </html>`;
  }
}

@Extension
class ExampleExtension extends Subscriber {
  @TextDocumentContentProvider("ExampleContent")
  public readonly contentProvider: ExampleContentProvider = new ExampleContentProvider();

  @TreeDataProvider("ExampleTree")
  public readonly treeProvider: ExampleTreeProvider = new ExampleTreeProvider();

  @WebviewPanel("ExampleWebview")
  public readonly historyView: ExampleWebviewProvider = new ExampleWebviewProvider();

  @Command("Example.sayHello")
  sayHello() {
    vscode.window.showInformationMessage("Hello World!");
  }

  @Event("onDidSaveTextDocument")
  didSaveTextDocumentHandle(doc: vscode.TextDocument) {
    // handle file saved event here
  }
}

export function activate(context: vscode.ExtensionContext) {
  new ExampleExtension();
}
0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago