import { WidgetFactory, OpenHandler, WebSocketConnectionProvider } from '@theia/core/lib/browser'; import { ContainerModule } from 'inversify'; import { FrontendApplicationContribution} from '@theia/core/lib/browser'; import { CommandContribution, ResourceResolver } from '@theia/core/lib/common'; import { CatalogoWidget, WIDGET_ID, CatalogoWidgetOptions} from './catalogo-frontend-widget' import { CatalogoOpenHandler } from './catalogo-frontend-openhandler' import { CatalogoContribution } from './catalogo-frontend-contribution' import { extensionPath, CatalogoServer } from '../common/catalogo-protocol' import { CatalogoService } from './catalogo-service'; import { CatalogoServiceImpl } from './catalogo-service-impl'; import { CatalogoUri } from './catalogo-uri'; import { CatalogoResourceResolver } from './catalogo-resource'; import './style/antd-namespaced.min.css'; import './style/index-namespaed.min.css'; import '@quarks/gluon-form/lib/main.css'; let sequence:number = 0; export default new ContainerModule(bind => { // Faz o Bind do Node Server bind(CatalogoServer).toDynamicValue(ctx => { const provider = ctx.container.get(WebSocketConnectionProvider); return provider.createProxy(extensionPath); }).inSingletonScope(); //Provisiona os Resource de FileSystem bind(CatalogoUri).toSelf().inSingletonScope(); bind(CatalogoResourceResolver).toSelf().inSingletonScope(); bind(ResourceResolver).toDynamicValue(ctx => ctx.container.get(CatalogoResourceResolver)).inSingletonScope(); //Registra o Widget bind(CommandContribution).to(CatalogoContribution).inSingletonScope(); bind(CatalogoWidget).toSelf().inRequestScope(); bind(CatalogoOpenHandler).toSelf().inSingletonScope(); //Registra o Service bind(CatalogoServiceImpl).toSelf().inSingletonScope(); bind(CatalogoService).toService(CatalogoServiceImpl); bind(FrontendApplicationContribution).toService(CatalogoServiceImpl); // Provisiona o Handler do catalogo bind(OpenHandler).toDynamicValue(ctx => ctx.container.get(CatalogoOpenHandler)).inSingletonScope(); bind(WidgetFactory).toDynamicValue(ctx => ({ id: WIDGET_ID, async createWidget(options: CatalogoWidgetOptions): Promise { const { container } = ctx; const child = container.createChild(); child.bind(CatalogoWidgetOptions).toConstantValue({ ...options, sequence: sequence++}); return child.get(CatalogoWidget); } })).inSingletonScope(); });