UNPKG

@theia/core

Version:

Theia is a cloud & desktop IDE framework implemented in TypeScript.

80 lines 3.03 kB
import URI from '../common/uri'; import { ContributionProvider, MaybePromise, Emitter, Event, Disposable } from '../common'; export interface OpenerOptions { } export declare const OpenHandler: unique symbol; /** * `OpenHandler` should be implemented to provide a new opener. */ export interface OpenHandler { /** * A unique id of this handler. */ readonly id: string; /** * A human-readable name of this handler. */ readonly label?: string; /** * A css icon class of this handler. */ readonly iconClass?: string; /** * Test whether this handler can open the given URI for given options. * Return a nonzero number if this handler can open; otherwise it cannot. * Never reject. * * A returned value indicating a priority of this handler. */ canHandle(uri: URI, options?: OpenerOptions): MaybePromise<number>; /** * Open a widget for the given URI and options. * Resolve to an opened widget or undefined, e.g. if a page is opened. * Never reject if `canHandle` return a positive number; otherwise should reject. */ open(uri: URI, options?: OpenerOptions): MaybePromise<object | undefined>; } export declare const OpenerService: unique symbol; /** * `OpenerService` provide an access to existing openers. */ export interface OpenerService { /** * Return all registered openers. * Never reject. */ getOpeners(): Promise<OpenHandler[]>; /** * Return all openers able to open the given URI for given options * ordered according their priority. * Never reject. */ getOpeners(uri: URI, options?: OpenerOptions): Promise<OpenHandler[]>; /** * Return an opener with the higher priority for the given URI. * Reject if such does not exist. */ getOpener(uri: URI, options?: OpenerOptions): Promise<OpenHandler>; /** * Add open handler i.e. for custom editors */ addHandler?(openHandler: OpenHandler): Disposable; /** * Event that fires when a new opener is added or removed. */ onDidChangeOpeners?: Event<void>; } export declare function open(openerService: OpenerService, uri: URI, options?: OpenerOptions): Promise<object | undefined>; export declare class DefaultOpenerService implements OpenerService { protected readonly handlersProvider: ContributionProvider<OpenHandler>; protected readonly customEditorOpenHandlers: OpenHandler[]; protected readonly onDidChangeOpenersEmitter: Emitter<void>; readonly onDidChangeOpeners: Event<void>; constructor(handlersProvider: ContributionProvider<OpenHandler>); addHandler(openHandler: OpenHandler): Disposable; getOpener(uri: URI, options?: OpenerOptions): Promise<OpenHandler>; getOpeners(uri?: URI, options?: OpenerOptions): Promise<OpenHandler[]>; protected prioritize(uri: URI, options?: OpenerOptions): Promise<OpenHandler[]>; protected getHandlers(): OpenHandler[]; } //# sourceMappingURL=opener-service.d.ts.map