/**************************************************************
 * 
 * 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_document_XScriptInvocationContext_idl__
#define __com_sun_star_document_XScriptInvocationContext_idl__


#ifndef __com_sun_star_document_XEmbeddedScripts_idl__
#include <com/sun/star/document/XEmbeddedScripts.idl>
#endif

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

module com { module sun { module star { module document { 

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

/** indicates support for executing scripts contained in a, possibly foreign, document.

    <p>If the component implementing it is a document, which supports embedding scripts into
    itself, then <member>ScriptContainer</member> refers to the document itself. Implementing this
    interface is unnecessary then, instead the document should simply implement <type>XEmbeddedScripts</type> directly.</p>

    <p>If the interface is implemented by a document which does not itself support embedding
    scripts into it, but which  is associated unambiguously with a document which does,
    then this other document is denoted by <member>ScriptContainer</member>.</p>

    <p>If the interface is implemented by a controller, then <member>ScriptContainer</member>
    refers to the document which supports embedding scripts, and which is unambiguosly
    associated with the controller. This must not necessarily be the model returned by
    <member scope="com::sun::star::frame">XController::getModel</member>.</p>

    @since OOo 2.4
 */
interface XScriptInvocationContext
{
    /** denotes the document which contains the scripts which are to be invoked from
    the component implementing the XScriptInvocationContext inteface.
    */
    [attribute, readonly] XEmbeddedScripts ScriptContainer;
};

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

}; }; }; }; 

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

#endif
