/**************************************************************
 * 
 * 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_ScriptEventDescriptor_idl__ 
#define __com_sun_star_script_ScriptEventDescriptor_idl__ 
 
 
//============================================================================= 
 
 module com {  module sun {  module star {  module script {  
 
//============================================================================= 
/** describes an effect, especially a script to be executed,
	for a certain event given by the listener type and the name of the 
	event method.
 */
published struct ScriptEventDescriptor
{
	/** listener type as string, same as listener-XIdlClass.getName().
	 */
	string ListenerType; 
 
	//------------------------------------------------------------------------- 
	/** event method as string.
	 */
	string EventMethod; 
 
	//------------------------------------------------------------------------- 
	/** data to be used if the addListener method needs an additional
		parameter. 
		<p>If the type of this parameter is different from string,
		it will be converted, when added.</p>
	 */
	string AddListenerParam; 
 
	//------------------------------------------------------------------------- 
	/** type of the script language as string; for example, "Basic" or "StarScript".
	 */
	string ScriptType; 
 
	//------------------------------------------------------------------------- 
	/** script code as string (the code has to correspond with the language
		defined by ScriptType).
	 */
	string ScriptCode; 
 
}; 
 
//============================================================================= 
 
}; }; }; };  
 
#endif 
