///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Copyright (c) 2000-2019 Ericsson Telecom AB                               //
//                                                                           //
// All rights reserved. This program and the accompanying materials          //
// are made available under the terms of the Eclipse Public License v2.0     //
// which accompanies this distribution, and is available at                  //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                 //
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//  Module: EPTF_CLL_UIHandler_XTDPTemplateDefinitions
// 
//  Purpose:
//    This module contains message templates for communication with the TTCN-3 Runtime GUI implementation.
//
//  Module Parameters:
//      tsp_schemaLocation - *charstring* - name of the file that contains XTDP schemas and instances of Runtime GUI.
//		tsp_EPTF_runtimeGuiExitButtonWidgetId - *charstring* - the widget ID of the exit button.
//		    NOTE: It should be removed when the handling of the pushbutton event will be moved to another component.
// 
//  Module depends on:
//    <XTDP_PDU_Defs>
//    <XTDPasp_Types>
//    <EPTF_CLL_UIHandler_MsgDefinitions>
//
//  Current Owner:
//    Laszlo Skumat (ELSZSKU)
// 
//  Last Review Date:
//    2007-
//
//  Detailed Comments:
//    -
//
///////////////////////////////////////////////////////////////

module EPTF_CLL_UIHandler_XTDPTemplateDefinitions
{

//=========================================================================
// Import Part
//=========================================================================

modulepar charstring tsp_schemaLocation := "XTDP-Message.xsd";
modulepar charstring tsp_EPTF_runtimeGuiExitButtonWidgetId := "EPTF_exit_ttcn_button";

} // end of module
