/**************************************************************
 * 
 * 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_script_provider_XScriptContext_idl__
#define __com_sun_star_script_provider_XScriptContext_idl__

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

#ifndef __com_sun_star_frame_XDesktop_idl__
#include <com/sun/star/frame/XDesktop.idl>
#endif

#ifndef __com_sun_star_frame_XModel_idl__
#include <com/sun/star/frame/XModel.idl>
#endif

#ifndef __com_sun_star_uno_XComponentContext_idl__ 
#include <com/sun/star/uno/XComponentContext.idl>
#endif


module com { module sun { module star { module document {
    interface XScriptInvocationContext;
}; }; }; };

//===========================================================================

module com { module sun { module star { module script { module provider {

//===========================================================================
/**
    This interface is provided to scripts, and provides a means of access to 
    the various interfaces which they might need to perform some action on 
    a document. It is required to be passed as the first argument for any 
    Java scripts.
*/
interface XScriptContext : ::com::sun::star::uno::XInterface {

    //----------------------------------------------------------------------
    /** 
        Obtain the document reference on which the script can operate

        @returns 
	      <type scope="com::sun::star::frame">XModel</type> interface
    */
    ::com::sun::star::frame::XModel getDocument();

    /** provides access to the context where the script was invoked

        <p>In some cases, it is possible that scripts, embedded in a document,
        are executed from within a context which is <em>not</em> the document
        itself. In this case, the <code>getInvocationContext</code> member allows
        to access this context.</p>

        <p>Note that the returned context is allowed to be <NULL/>, in this case,
        the document as returned by <code>getDocument</code> is the invocation context.</p>

        <p>If the returned context is not <NULL/>, its <code>ScriptContainer</code> attribute
        equals the document as returned by <code>XScriptContext::getDocument</code>.</p>

        @since OpenOffice 3.0
    */
    ::com::sun::star::document::XScriptInvocationContext getInvocationContext();

    /** 
        Obtain the desktop reference on which the script can operate

        @returns 
	      <type scope="com::sun::star::frame">XDesktop</type> interface
    */
    ::com::sun::star::frame::XDesktop getDesktop();

    /** 
        Obtain the component context which the script can use to create 
        other uno components

        @returns 
	      <type scope="com::sun::star::uno">XComponentContext</type> interface
    */
    ::com::sun::star::uno::XComponentContext getComponentContext();


};

//===========================================================================
}; }; }; }; }; // ::com::sun::star::script::provider

#endif
