/**************************************************************
 * 
 * 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
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#ifndef __com_sun_star_drawing_framework_XConfigurationControllerRequestQueue_idl__
#define __com_sun_star_drawing_framework_XConfigurationControllerRequestQueue_idl__

#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif

module com { module sun { module star { module drawing { module framework {

published interface XConfigurationChangeRequest;

/** The request queue of the configuration controller handles requests for
    changes to the current configuration.

    <p>This interface allows callers to add requests to the back of the
    queue and to determine wheter the queue is empty.  Using this interace
    should normally not be necessary for anyone else than the
    <type>XConfigurationController</type>.  It may be removed in the future.</p>
*/
published interface XConfigurationControllerRequestQueue
{
    /** Return whether there are pending requests for configuration changes.
        @return
            Returns <TRUE/> when there is at least one request object in the
            queue that has not yet been processed.  It returns <FALSE/> when
            the queue is empty.
    */
    boolean hasPendingRequests ();

    /** Add a request for a configuration change to the request queue.
        <p>This method should not be called from outside the drawing
        famework.  Other sub conrollers of the drawing framework are typical
        callers.  They can add change requests that can not be made with the
        <member>requestResourceActivation()</member> and
        <member>requestResourceDeactivation()</member> methods.</p>
        @param xRequest
            The configuration change represented by this request object must only
            be commited to the configuration when the
            <member
            scope="com::sun::star::drawing::framework::XConfigurationChangeRequest"
            >execute()</member>
            method of the xRequest object is called.
    */
    void postChangeRequest (
        [in] XConfigurationChangeRequest xRequest);
};

}; }; }; }; }; // ::com::sun::star::drawing::framework

#endif
