/* -*- 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_PopupMenuController_idl__
#define __com_sun_star_frame_PopupMenuController_idl__

#include <com/sun/star/frame/XPopupMenuController.idl>
#include <com/sun/star/lang/XInitialization.idl>
#include <com/sun/star/frame/XStatusListener.idl>
#include <com/sun/star/frame/XDispatchProvider.idl>
#include <com/sun/star/lang/XComponent.idl>


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


/** provides access to a pop-up menu controller.

    <p>
    A pop-up menu controller is used to make special functions available to
    users, which depend on runtime or context specific conditions.<br/>
    A typical example for a pop-up menu controller can be a recent file list
    implementation which provides a list of latest files that a user has
    worked on. This list gets changes consistently during a work session.
    </p>

    @since OOo 2.0
*/

service PopupMenuController
{
    /** supports functions to initialize and update a pop-up menu controller
        implementation.

        <p>
        A pop-up menu controller implementation gets initialized with a
        com::sun::star::awt::XPopupMenu object. This assures
        that a pop-up menu controller can be implemented with any UNO based
        language.
        </p>
    */
    interface com::sun::star::frame::XPopupMenuController;

    /** provides functions to initialize a pop-up menu controller with
        specific data which are needed.

        <p>
        This interface should not directly used. A factory service is responsible to
        initialize every controller correctly.<br/>

        A pop-up menu controller needs at least two additional arguments
        provided as com::sun::star::beans::PropertyValue:
        <ul>
            <li><b>Frame</b><br>specifies the com::sun::star::frame::XFrame
                   instance to which the pop-up menu controller belongs to.</li>
            <li><b>CommandURL</b><br>specifies which pop-up menu controller should be created.</li>
        </ul>
        </p>

        @see PopupMenuControllerFactory
    */
    interface com::sun::star::lang::XInitialization;

    /** used to brief the pop-up menu controller with new status information.

        <p>
        A pop-up menu controller makes special functions available to users which
        normally depend on the state of other data. This interface is used to
        send this data to a controller implementation.
        </p>
    */
    interface com::sun::star::frame::XStatusListener;

    /** used to query for commands supported by the pop-up menu controller to
        execute them directly.

        <p>
        A pop-up menu controller provides special functions which should be
        available by the normal dispatch API. This optional interface enables
        pop-up menu controller to be normal dispatch providers.<br/>
        <b>Attention:</b><br/>
        Po-pup menu controller functions must be specified using the following
        the dispatch URL scheme: "vnd.sun.star.popup:" opaque_part [ "?" query ].
        </p>

        @since OOo 2.2
    */
    [optional] interface com::sun::star::frame::XDispatchProvider;

    /** used to dispose pop-up menu controller by the owner instance.

        <p>
        A pop-up menu controller resides in a menu which has a limited
        life-time. For correct life-time handling a pop-up menu
        controller should support this interface.
        </p>

        @since OOo 2.2
    */
    [optional] interface com::sun::star::lang::XComponent;
};

}; }; }; };


#endif

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