///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// 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_TPE_Test_Templates
// 
//  Purpose:
//    This module contains the templates of generic EPTF TimeProfileEditor test.
// 
//  Module depends on:
//    <ttcn_ericsson_se_protocolModules_xtdp_xtdp> 
//
//  Current Owner:
//    Janos Zoltan Svaner (ejnosvn)
// 
//  Last Review Date:
//    2007-xx-xx
//
//  Detailed Comments:
//    -
//
///////////////////////////////////////////////////////////////
module EPTF_TPE_Test_Templates {

  import from ttcn_ericsson_se_protocolModules_xtdp_xtdp all;
  
  template charstring t_GUI_addTimeSequenceListBox(in charstring pl_value) := "*xTDP_AddRequests*time_sequences_listbox*"&pl_value&"(*)";
  template charstring t_GUI_addTimeSequenceMenu(in charstring pl_value) := "*xTDP_AddRequests*time_sequence_menu*"&pl_value&"(*)";
  template charstring t_GUI_addTimeSequenceChart(in charstring pl_value) := "*xTDP_AddRequests*preview_chart*"&pl_value&"(*)";
  template charstring t_GUI_drawTimeSequenceChart(in charstring pl_value) := "*xTDP_Requests*"&pl_value&"*action*put*"&pl_value&"(*)"
  template charstring t_GUI_addTimeSuquencePropertiesLabel(in charstring pl_value) := "*xTDP_Requests*action*put*time_sequences_properties_label*"&pl_value&"(*)";
  template charstring t_GUI_addProfileListBox(in charstring pl_value) := "*xTDP_AddRequests*profile_listbox*"&pl_value&"(*)";
  template charstring t_GUI_addProfilePropertiesLabel(in charstring pl_value) :=  "*xTDP_Requests*profile_properties_label*"&pl_value&"(*)";
  template charstring t_GUI_addPreviewChart(in charstring pl_value) :=  "*xTDP_AddRequests*preview_chart*"&pl_value&"(*)";
  template charstring t_GUI_addTimeSquencePropertiesTree(in charstring pl_value) := "*xTDP_AddRequests*time_sequences_properties_tree*"&pl_value&"(*)";
  template charstring t_GUI_addProfilePropertiesTree(in charstring pl_value) := "*xTDP_AddRequests*profile_properties_tree_hbox*"&pl_value&"(*)";
  template charstring t_GUI_removeAll := pattern "*xTDP_RemoveRequests*";
  template charstring t_GUI_addWindow := pattern "*xTDP_AddRequests*window*height*";
  template charstring t_GUI_addImages := pattern "*xTDP_AddRequests*image*id*";
  template charstring t_GUI_addTAbBoxs := pattern "*xTDP_AddRequests*tabpage*";
  template charstring t_GUI_addTimeUnitHbox := pattern "*xTDP_AddRequests*time_unit_hbox*"; //2X
  template charstring t_GUI_addErrorSaveExitHbox := pattern "*xTDP_AddRequests*error_hbox*save_exit_hbox*";
  template charstring t_GUI_addSave := pattern "*xTDP_Requests*save_button*";
  template charstring t_GUI_addExit := pattern "*xTDP_Requests*exit_ttcn_button*";
  template charstring t_GUI_addEmptyCfgFileTextBox := pattern "*xTDP_Requests*MODULE_PARAMETERS*";
  template charstring t_GUI_removeChart := pattern "*xTDP_RemoveRequests*preview_chart*"
  template charstring t_GUI_addChart := pattern "*xTDP_AddRequests*label id=*";
  //new time sequence  
  template charstring t_GUI_sequenceTextBoxReq := pattern "*xTDP_Requests*widgetId*new_sequence_textbox*";
  template charstring t_GUI_profileTextBoxReq := pattern "*xTDP_Requests*widgetId*new_profile_textbox*";
  
  template XTDP_Message t_GUI_sequenceTextBoxValue(in integer pl_id, in charstring pl_name):= {
    transactionID := omit,
    choice := {
    xTDP_Responses := {
      xTDP_Response_list := {{
        requestId := pl_id,
        responseCode := success,
        argument := pl_name,
        errorSource := omit,
        errorCode := omit,
        errorMessage := omit
      }}}
    }
  }
  
  template XTDP_Message t_GUI_profileTextBoxValue(in integer pl_id, in charstring pl_name):= {
    transactionID := omit,
    choice := {
    xTDP_Responses := {
      xTDP_Response_list := {{
        requestId := pl_id,
        responseCode := success,
        argument := pl_name,
        errorSource := omit,
        errorCode := omit,
        errorMessage := omit
      }}}
    }
  }
   
  template charstring t_GUI_enableRemoveSequenceButton := pattern "*xTDP_Requests*action*enable*remove_sequence_button*";
  template charstring t_GUI_enableTimeSequencePropertieTree := pattern "*xTDP_Requests*action*enable*time_sequences_properties_tree*";
  template charstring t_GUI_enableBeforeRow := pattern "*xTDP_Requests*action*enable*before_row_numwidget*";
  template charstring t_GUI_enableaddTimeSequenceRowButton := pattern "*xTDP_Requests*action*enable*add_time_sequence_row_button*"
  template charstring t_GUI_enableRemoveRowButton := pattern "*xTDP_Requests*action*enable*remove_row_numwidget*";
  template charstring t_GUI_removeTimeSequencePropertiesTree := pattern "*xTDP_RemoveRequests*time_sequences_properties_tree*";
  template charstring t_GUI_enableReomveTimeSequenceRowButton := pattern "*xTDP_Requests*action*enable*remove_time_sequence_row_button*";
  template charstring t_GUI_enableRemoveProfileButton := pattern "*xTDP_Requests*action*enable*remove_profile_button*";
  template charstring t_GUI_enableTimeProfilePropertiesTree := pattern "*xTDP_Requests*action*enable*time_profiles_properties_tree*";
  template charstring t_GUI_enableBeforeProfileRow := pattern "*xTDP_Requests*action*enable*before_profile_row_numwidget*";
  template charstring t_GUI_enableAddProfileRowButton := pattern "*xTDP_Requests*action*enable*add_profile_row_button*";
  template charstring t_GUI_enableRemoveProfileRow := pattern "*xTDP_Requests*action*enable*remove_profile_row_numwidget*";
  template charstring t_GUI_removeTimeProfilePropertiesTree := pattern "*xTDP_RemoveRequests*time_profiles_properties_tree*";
  template charstring t_GUI_enableRemoveProfileRowButton := pattern "*xTDP_Requests*action*enable*remove_profile_row_button*";
  template charstring t_GUI_addNewTimeSequence2CfgFileTextBox(in charstring pl_value) := "*xTDP_Requests*config_file_textbox*tsp_EPTF_ExecCtrl_TimeProfileDescrList*"&pl_value&"*0.0*100.0(*)";
  template charstring t_GUI_removeTimeSequenceWidget(in charstring pl_value) := "*xTDP_RemoveRequests*widgetId*"&pl_value&"(*)";
  template charstring t_GUI_removeTimeSequenceMenuWidget(in charstring pl_value) := "*xTDP_RemoveRequests*widgetId*"&pl_value&"_menu(*)";
  template charstring t_GUI_removeTimeProfileWidget(in charstring pl_value) := "*xTDP_RemoveRequests*widgetId*"&pl_value&"(*)";
  template charstring t_GUI_noError := pattern "*xTDP_Requests*widgetId*error*Errors: none*"
  
  const XTDP_Message c_GUI_newSequenceButton := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 18,
          action_ := { { put:= {
            widget := {
              widgetId := "new_sequence_button",
              widgetType := string
            },
            argument_list := {"New sequence"}
          }}}
        }}}
      }
    }
  
  template XTDP_Message t_GUI_changeTSPropertieTree(in integer pl_row, in integer pl_column, in charstring pl_value) := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "time_sequences_properties_tree."&int2str(pl_row)&"."&int2str(pl_column),
              widgetType := string
            },
            argument_list := {pl_value}
          }}}
        }}}
      }
    }
  
  template XTDP_Message t_GUI_addBeforeRowNum(in charstring pl_value) := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "before_row_numwidget",
              widgetType := string
            },
            argument_list := {pl_value}
          }}}
        }}}
      }
    }
  
  const XTDP_Message c_GUI_addTimeSequenceRow := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 51,
          action_ := { { put:= {
            widget := {
              widgetId := "add_time_sequence_row_button",
              widgetType := string
            },
            argument_list := {"Add row"}
          }}}
        }}}
      }
    }
  
  const XTDP_Message c_GUI_removeTimeSequenceRow := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "remove_time_sequence_row_button",
              widgetType := string
            },
            argument_list := {"Remove row"}
          }}}
        }}}
      }
    }
      
  
  const XTDP_Message c_GUI_removeTimeSequence := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "remove_sequence_button",
              widgetType := string
            },
            argument_list := {"Remove selected sequence"}
          }}}
        }}}
      }
    }
  
  const XTDP_Message c_GUI_addNewProfile := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "new_profile_button",
              widgetType := string
            },
            argument_list := {"New profile"}
          }}}
        }}}
      }
    }
  
  
  const XTDP_Message c_GUI_addNewProfileRow := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "add_profile_row_button",
              widgetType := string
            },
            argument_list := {"Add row with sequence:"}
          }}}
        }}}
      }
    }
    
  const XTDP_Message c_GUI_removeTimeProfileRow :={
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "remove_profile_row_button",
              widgetType := string
            },
            argument_list := {"Remove row"}
          }}}
        }}}
      }
    }
  
  const XTDP_Message c_GUI_removeTimeProfile := {
      transactionID := omit,
      choice := {
      xTDP_Requests := {
        ackRequested := omit,
        xTDP_Request_list := {{
          requestId := 50,
          action_ := { { put:= {
            widget := {
              widgetId := "remove_profile_button",
              widgetType := string
            },
            argument_list := {"Remove selected profile"}
          }}}
        }}}
      }
    }

}
