/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef __com_sun_star_frame_FrameLoader_idl__
#define __com_sun_star_frame_FrameLoader_idl__

#include <com/sun/star/frame/XFrameLoader.idl>
#include <com/sun/star/lang/XInitialization.idl>
#include <com/sun/star/container/XNamed.idl>


 module com {  module sun {  module star {  module frame {

/** derivations of this abstract service are used to load components
    into Frames of the environment

    <p>
    Concrete implementations of this service register, for example,
    for file name extensions or MIME types to load appropriate
    components. The components loaded are at least Controller.
    Instead of SynchronousFrameLoader this one use asynchronous
    processes to load the component.
    </p>

    @see SynchronousFrameLoader
 */
published service FrameLoader
{
    /** support asynchronous loading of the component
     */
    interface XFrameLoader;

    /** support initialization of loader with its own configuration!

        <p>
        Concrete implementations should use it to get her own configuration data
        directly after creation by the FrameLoaderFactory.
        Otherwise they must use normal configuration API to do so.
        </p>
     */
    [optional] interface com::sun::star::lang::XInitialization;

    /** provides access to the internal name of this frame loader

        <p>
        The internal name is a part of his configuration and will be passed by
        the FrameLoaderFactory after creation
        if optional interface com::sun::star::lang::XInitialization
        is supported. Value of function com::sun::star::container::XNamed::getName()
        can be used on service FrameLoaderFactory to get further information about this loader.
        Setting of this name by calling com::sun::star::container::XNamed::setName()
        must be forwarded to same factory service. He should decide, if it's allowed or not.
        The reason: prevent code against name ambiguities.
        </p>
     */
     [optional] interface com::sun::star::container::XNamed;
};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
