///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// 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_UIHandlerVariableUI_Definitions
// 
//  Purpose:
//    This module contains definitions of VariableUI extension for the EPTF_UIHandler.
// 
//  Module depends on:
//    <EPTF_CLL_UIHandler_Definitions>
//    <EPTF_CLL_UIHandlerClient_Definitions>
//    <EPTF_CLL_Logging_Definitions>
//    <EPTF_CLL_LoggingUI_Definitions>
//    <EPTF_CLL_Variable_Definitions>
//
// 
//  Current Owner:
//    Zsolt Szalai (EZSOSZA)
//    EFLOATT
// 
//  Last Review Date:
//    2010-xx-xx
//
//  Detailed Comments:
//    -
//
///////////////////////////////////////////////////////////////
module EPTF_CLL_UIHandlerVariableUI_Definitions
// [.objid{ itu_t(0) identified_organization(4) etsi(0) 
// identified_organization(127) ericsson(5) testing(0)
// <put further nodes here if needed>}]
{
  import from EPTF_CLL_UIHandlerClient_Definitions all;
  import from EPTF_CLL_Logging_Definitions all;
  import from EPTF_CLL_LoggingUI_Definitions all;
  import from EPTF_CLL_UIHandler_Definitions all;
  import from EPTF_CLL_Variable_Definitions all;
  import from ttcn_ericsson_se_protocolModules_xtdp_xtdl all;

/*   modulepar{ */
/*     EPTF_UIHandler_VariableUI_Connections tsp_VariableUI_connections:={}; */
/*     charstring tsp_VariableUI_initwidget := "" */
/*     charstring tsp_VariableUI_initparent := ""; */
/*   } */
  modulepar charstring tsp_EPTF_UIHandler_VariableUI_loggingComponentMask := "EPTF_UIHandlerVariableUI";

///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_SimpleConnectionList
//  Purpose:
//    The list of <EPTF_UIHandler_VariableUI_SimpleConnection> records.
///////////////////////////////////////////////////////////
  type record of EPTF_UIHandler_VariableUI_SimpleConnection EPTF_UIHandler_VariableUI_SimpleConnectionList;

///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_SimpleConnection
//  Purpose:
//    -
///////////////////////////////////////////////////////////
  type record EPTF_UIHandler_VariableUI_SimpleConnection {
    charstring variablename,
    charstring widgetid
  }

///////////////////////////////////////////////////////////
//  Const: EPTF_UIHandler_VariableUI_SimpleConnection
//  Purpose:
//    An empty simpleconnection.
///////////////////////////////////////////////////////////
  const EPTF_UIHandler_VariableUI_SimpleConnection c_EPTF_emptyEPTF_UIHandler_VariableUI_SimpleConnection :=
  {
    variablename := "",
    widgetid := ""
  }
  
///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_SimpleConnectionList
//  Purpose:
//    The list of <EPTF_UIHandler_VariableUI_SimpleConnection> records.
///////////////////////////////////////////////////////////
  type record of EPTF_UIHandler_VariableUI_SimpleConnectionWithSubsMode EPTF_UIHandler_VariableUI_SimpleConnectionWithSubsModeList;

///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_SimpleConnectionWithSubsMode
//  Purpose:
//    -
///////////////////////////////////////////////////////////
  type record EPTF_UIHandler_VariableUI_SimpleConnectionWithSubsMode {
    charstring variablename,
    charstring widgetid,
    EPTF_Var_SubscriptionMode subsMode optional
  }

///////////////////////////////////////////////////////////
//  Const: EPTF_UIHandler_VariableUI_SimpleConnectionWithSubsMode
//  Purpose:
//    An empty simpleconnection.
///////////////////////////////////////////////////////////
  const EPTF_UIHandler_VariableUI_SimpleConnectionWithSubsMode c_EPTF_emptyEPTF_UIHandler_VariableUI_SimpleConnectionWithSubsMode :=
  {
    variablename := "",
    widgetid := "",
    subsMode := omit
  }
  
///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_WidgetConnectionList
//  Purpose:
//    The list of <EPTF_UIHandler_VariableUI_WidgetConnection> records.
///////////////////////////////////////////////////////////
  type record of EPTF_UIHandler_VariableUI_WidgetConnection EPTF_UIHandler_VariableUI_WidgetConnectionList;

  
///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_WidgetConnection
//  Purpose:
//    -
///////////////////////////////////////////////////////////
  type record EPTF_UIHandler_VariableUI_WidgetConnection {
    charstring variablename,
    charstring widgetid,
    Widgets widget,
    charstring parentid,
    EPTF_Var_SubscriptionMode subsMode optional
  }
  
///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_Connection
//  Purpose:
//    -
///////////////////////////////////////////////////////////
  type record EPTF_UIHandler_VariableUI_Connection {
    charstring variablename,
    charstring widgetid,
    Widgets widget optional,
    charstring parentid optional,
    integer holdingwidgetRef optional,
    EPTF_Var_SubscriptionMode subsMode optional
  }

///////////////////////////////////////////////////////////
//  Const: c_EPTF_emptyEPTF_UIHandler_VariableUI_Connection
//  Purpose:
//    An empty connection.
///////////////////////////////////////////////////////////
  const EPTF_UIHandler_VariableUI_Connection c_EPTF_emptyEPTF_UIHandler_VariableUI_Connection :=
  {
    variablename := "",
    widgetid := "",
    widget := omit,
    parentid := omit,
    holdingwidgetRef := omit,
    subsMode := omit
  }

///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_ConnectionList
//  Purpose:
//    The list of <EPTF_UIHandler_VariableUI_Connection> records.
///////////////////////////////////////////////////////////  
  type record of EPTF_UIHandler_VariableUI_Connection EPTF_UIHandler_VariableUI_ConnectionList;

///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_Holdingwidget
//  Purpose:
//    -
///////////////////////////////////////////////////////////
  type record EPTF_UIHandler_VariableUI_Holdingwidget{
    charstring name,
    boolean initialized,
    Widgets widget,
    charstring parentid
  }

///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_VariableUI_HoldingwidgetList
//  Purpose:
//    The list of <EPTF_UIHandler_VariableUI_Holdingwidget> records.
///////////////////////////////////////////////////////////
  type record of EPTF_UIHandler_VariableUI_Holdingwidget EPTF_UIHandler_VariableUI_HoldingwidgetList;

///////////////////////////////////////////////////////////
//  Component: EPTF_UIHandler_VariableUI_CT
// 
//  Purpose:
//   The component that implements the EPTF_UIHandler_VariableUI feature
// 
//  Elements:
//    v_VariableUI_initialized - *boolean*
//    v_VariableUI_UIHandler - <EPTF_UIHandler_CT>
//    v_VariableUI_connections - <EPTF_UIHandler_VariableUI_ConnectionList>
//    v_VariableUI_holdingwidgets - <EPTF_UIHandler_VariableUI_HoldingwidgetList>
//    v_VariableUI_initparent - *boolean*
//    v_VariableUI_lastput - *integer*
//    v_UIHandler_VariableUI_loggingMaskId - *integer*
//
//  Detailed Comments:
//   -
//
///////////////////////////////////////////////////////////
  type component EPTF_UIHandler_VariableUI_CT extends EPTF_UIHandlerClient_CT , EPTF_LoggingUIClient_CT{
    private var boolean v_VariableUI_initialized := false;
    private var EPTF_UIHandler_CT v_VariableUI_UIHandler;
    private var EPTF_UIHandler_VariableUI_ConnectionList v_VariableUI_connections := {};//tsp_VariableUI_connections;
    private var EPTF_UIHandler_VariableUI_HoldingwidgetList v_VariableUI_holdingwidgets := {};
    private var boolean v_VariableUI_initparent := false;
    private var integer v_VariableUI_lastput := 0;
    // logging
    private var integer v_UIHandler_VariableUI_loggingMaskId := c_EPTF_Logging_invalidMaskId;
  }
}
