InspectorBuilder.plugin.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const InspectorBuilderServiceUILabel = "Inspector Builder";
  2. //Add custom inspectors here
  3. import ExampleInspector = require("./ExampleInspectors/ExampleInspector");
  4. class InspectorBuilderService implements
  5. Editor.HostExtensions.HostEditorService,
  6. Editor.HostExtensions.ProjectServicesEventListener,
  7. Editor.HostExtensions.UIServicesEventListener {
  8. name: string = "InspectorBuilderService";
  9. description: string = "This service provides custom inspector functionality.";
  10. private serviceLocator: Editor.HostExtensions.HostServiceLocator = null;
  11. initialize(serviceLoader: Editor.Extensions.ServiceLoader) {
  12. Atomic.print("InspectorBuilder.initialize");
  13. this.serviceLocator = <Editor.HostExtensions.HostServiceLocator>(serviceLoader);
  14. if (this.serviceLocator) {
  15. this.serviceLocator.projectServices.register(this);
  16. this.serviceLocator.uiServices.register(this);
  17. }
  18. }
  19. projectUnloaded() {
  20. this.serviceLocator.uiServices.removePluginMenuItemSource(InspectorBuilderServiceUILabel);
  21. Atomic.print("InspectorBuilder.projectUnloaded");
  22. if (this.serviceLocator) {
  23. this.serviceLocator.projectServices.unregister(this);
  24. this.serviceLocator.uiServices.unregister(this);
  25. }
  26. }
  27. projectAssetClicked(asset: ToolCore.Asset): boolean {
  28. Atomic.print("Inspector.projectAssetClicked with extension: " + asset.extension);
  29. if (asset.extension == ".example") {
  30. const exampleInspector = new ExampleInspector();
  31. this.serviceLocator.uiServices.loadCustomInspector(<Atomic.UIWidget>exampleInspector);
  32. exampleInspector.inspect(asset);
  33. return true;
  34. }
  35. return false;
  36. }
  37. }
  38. const inspectorBuilderService = new InspectorBuilderService();
  39. export default inspectorBuilderService;