let draw_action (agentA : string) (agentB : string) (col : Tk.color)(sender_pattern : string)(real_message : string)(receive_pattern : string)(col_txt : Tk.color) (message2 : string) (col_txt2 : Tk.color) =
        let x_posA = Hashtbl.find role_position agentA in
        let x_posB = Hashtbl.find role_position agentB in
        let old_yOrd = !yOrd in
        draw_row x_posA x_posB (yAction()) col receive_pattern real_message sender_pattern col_txt message2 col_txt2;
        draw_step ((!xmax)-. 0.1) (old_yOrd +. 5.) ("Step"^(string_of_int !tag_number)^".") col (!tag_number) "step";
        Hashtbl.iter
        (fun role_name role_x ->
                if( (Hashtbl.find_all var_in_monitor role_name)<>[] ) 
                then draw_click_zone role_x old_yOrd (!tag_number) (role_name^"click_zone")
        )
        role_position;
        if(!message_emission) 
        then (Canvas.configure_text canvas (`Tag "emission") ~state:(`Disabled) )
        else (Canvas.configure_text canvas (`Tag "emission") ~state:(`Hidden));
        if(!message_sender) 
        then (Canvas.configure_text canvas (`Tag "message_sender") ~state:(`Disabled) )
        else (Canvas.configure_text canvas (`Tag "message_sender") ~state:(`Hidden));
        if(!message_receiver) 
        then (Canvas.configure_text canvas (`Tag "message_receiver") ~state:(`Disabled) )
        else (Canvas.configure_text canvas (`Tag "message_receiver") ~state:(`Hidden));
        if(!message_real) 
        then (Canvas.configure_text canvas (`Tag "message_real") ~state:(`Disabled))
        else (Canvas.configure_text canvas (`Tag "message_real") ~state:(`Hidden));
        if(!message_principal_sender) 
        then (Canvas.configure_text canvas (`Tag "message_principal_sender") ~state:(`Disabled))
        else (Canvas.configure_text canvas (`Tag "message_principal_sender") ~state:(`Hidden));