@jupyterlab/docmanager
Version: 
JupyterLab - Document Manager
200 lines (199 loc) • 6.27 kB
TypeScript
import { IChangedArgs } from '@jupyterlab/coreutils';
import { DocumentRegistry, IDocumentWidget } from '@jupyterlab/docregistry';
import { ITranslator } from '@jupyterlab/translation';
import { IDisposable } from '@lumino/disposable';
import { IMessageHandler, Message } from '@lumino/messaging';
import { ISignal } from '@lumino/signaling';
import { Widget } from '@lumino/widgets';
import { IRecentsManager } from './tokens';
/**
 * A class that maintains the lifecycle of file-backed widgets.
 */
export declare class DocumentWidgetManager implements IDisposable {
    /**
     * Construct a new document widget manager.
     */
    constructor(options: DocumentWidgetManager.IOptions);
    /**
     * A signal emitted when one of the documents is activated.
     */
    get activateRequested(): ISignal<this, string>;
    /**
     * Whether to ask confirmation to close a tab or not.
     */
    get confirmClosingDocument(): boolean;
    set confirmClosingDocument(v: boolean);
    /**
     * Signal triggered when an attribute changes.
     */
    get stateChanged(): ISignal<DocumentWidgetManager, IChangedArgs<any>>;
    /**
     * Test whether the document widget manager is disposed.
     */
    get isDisposed(): boolean;
    /**
     * Dispose of the resources used by the widget manager.
     */
    dispose(): void;
    /**
     * Create a widget for a document and handle its lifecycle.
     *
     * @param factory - The widget factory.
     *
     * @param context - The document context object.
     *
     * @returns A widget created by the factory.
     *
     * @throws If the factory is not registered.
     */
    createWidget(factory: DocumentRegistry.WidgetFactory, context: DocumentRegistry.Context): IDocumentWidget;
    /**
     * When a new widget is created, we need to hook it up
     * with some signals, update the widget extensions (for
     * this kind of widget) in the docregistry, among
     * other things.
     */
    private _initializeWidget;
    /**
     * Install the message hook for the widget and add to list
     * of known widgets.
     *
     * @param context - The document context object.
     *
     * @param widget - The widget to adopt.
     */
    adoptWidget(context: DocumentRegistry.Context, widget: IDocumentWidget): void;
    /**
     * See if a widget already exists for the given context and widget name.
     *
     * @param context - The document context object.
     *
     * @returns The found widget, or `undefined`.
     *
     * #### Notes
     * This can be used to use an existing widget instead of opening
     * a new widget.
     */
    findWidget(context: DocumentRegistry.Context, widgetName: string): IDocumentWidget | undefined;
    /**
     * Get the document context for a widget.
     *
     * @param widget - The widget of interest.
     *
     * @returns The context associated with the widget, or `undefined`.
     */
    contextForWidget(widget: Widget): DocumentRegistry.Context | undefined;
    /**
     * Clone a widget.
     *
     * @param widget - The source widget.
     *
     * @returns A new widget or `undefined`.
     *
     * #### Notes
     *  Uses the same widget factory and context as the source, or throws
     *  if the source widget is not managed by this manager.
     */
    cloneWidget(widget: Widget): IDocumentWidget | undefined;
    /**
     * Close the widgets associated with a given context.
     *
     * @param context - The document context object.
     */
    closeWidgets(context: DocumentRegistry.Context): Promise<void>;
    /**
     * Dispose of the widgets associated with a given context
     * regardless of the widget's dirty state.
     *
     * @param context - The document context object.
     */
    deleteWidgets(context: DocumentRegistry.Context): Promise<void>;
    /**
     * Filter a message sent to a message handler.
     *
     * @param handler - The target handler of the message.
     *
     * @param msg - The message dispatched to the handler.
     *
     * @returns `false` if the message should be filtered, of `true`
     *   if the message should be dispatched to the handler as normal.
     */
    messageHook(handler: IMessageHandler, msg: Message): boolean;
    /**
     * Set the caption for widget title.
     *
     * @param widget - The target widget.
     */
    protected setCaption(widget: Widget): Promise<void>;
    /**
     * Handle `'close-request'` messages.
     *
     * @param widget - The target widget.
     *
     * @returns A promise that resolves with whether the widget was closed.
     */
    protected onClose(widget: Widget): Promise<boolean>;
    /**
     * Dispose of widget regardless of widget's dirty state.
     *
     * @param widget - The target widget.
     */
    protected onDelete(widget: Widget): Promise<void>;
    /**
     * Record the activated file, and its parent directory, as recently opened.
     */
    private _recordAsRecentlyOpened;
    /**
     * Record the activated file, and its parent directory, as recently opened.
     */
    private _recordAsRecentlyClosed;
    /**
     * Ask the user whether to close an unsaved file.
     */
    private _maybeClose;
    /**
     * Handle the disposal of a widget.
     */
    private _widgetDisposed;
    /**
     * Handle the disposal of a widget.
     */
    private _onWidgetDisposed;
    /**
     * Handle a file changed signal for a context.
     */
    private _onFileChanged;
    /**
     * Handle a path changed signal for a context.
     */
    private _onPathChanged;
    protected translator: ITranslator;
    private _registry;
    private _activateRequested;
    private _confirmClosingTab;
    private _isDisposed;
    private _stateChanged;
    private _recentsManager;
}
/**
 * A namespace for document widget manager statics.
 */
export declare namespace DocumentWidgetManager {
    /**
     * The options used to initialize a document widget manager.
     */
    interface IOptions {
        /**
         * A document registry instance.
         */
        registry: DocumentRegistry;
        /**
         * The manager for recent documents.
         */
        recentsManager?: IRecentsManager;
        /**
         * The application language translator.
         */
        translator?: ITranslator;
    }
}