abapGit/src/ui/lib/zcl_abapgit_gui_page_hoc.clas.abap
Marc Bernard 03dfdb072c
Fix extended check issues - Part 4 (#7089)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-05 17:41:31 +01:00

162 lines
4.1 KiB
ABAP

CLASS zcl_abapgit_gui_page_hoc DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_gui_page
FINAL
CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS create
IMPORTING
!ii_child_component TYPE REF TO zif_abapgit_gui_renderable
!iv_page_title TYPE string OPTIONAL
!iv_page_layout TYPE string DEFAULT zcl_abapgit_gui_page=>c_page_layout-centered
!io_page_menu TYPE REF TO zcl_abapgit_html_toolbar OPTIONAL
!ii_page_menu_provider TYPE REF TO zif_abapgit_gui_menu_provider OPTIONAL
!ii_page_title_provider TYPE REF TO zif_abapgit_gui_page_title OPTIONAL
!iv_extra_css_url TYPE string OPTIONAL
!iv_extra_js_url TYPE string OPTIONAL
!iv_show_as_modal TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(ri_page_wrap) TYPE REF TO zif_abapgit_gui_renderable
RAISING
zcx_abapgit_exception.
METHODS get_child
RETURNING
VALUE(ri_child) TYPE REF TO zif_abapgit_gui_renderable.
METHODS constructor
IMPORTING
!ii_child_component TYPE REF TO zif_abapgit_gui_renderable
!is_control TYPE zcl_abapgit_gui_page=>ty_control
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
METHODS render_content
REDEFINITION.
PRIVATE SECTION.
DATA mi_child TYPE REF TO zif_abapgit_gui_renderable .
METHODS detect_modal
RETURNING
VALUE(rv_is_modal) TYPE abap_bool.
METHODS detect_menu_provider
RETURNING
VALUE(ri_ref) TYPE REF TO zif_abapgit_gui_menu_provider.
METHODS detect_title_provider
RETURNING
VALUE(ri_ref) TYPE REF TO zif_abapgit_gui_page_title.
ENDCLASS.
CLASS zcl_abapgit_gui_page_hoc IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mi_child = ii_child_component.
ms_control = is_control.
IF ms_control-show_as_modal = abap_false.
ms_control-show_as_modal = detect_modal( ).
ENDIF.
IF ms_control-page_menu_provider IS NOT BOUND.
ms_control-page_menu_provider = detect_menu_provider( ).
ENDIF.
IF ms_control-page_title_provider IS NOT BOUND.
ms_control-page_title_provider = detect_title_provider( ).
ENDIF.
ENDMETHOD.
METHOD create.
DATA lo_page TYPE REF TO zcl_abapgit_gui_page_hoc.
DATA ls_control TYPE zcl_abapgit_gui_page=>ty_control.
ls_control-page_title = iv_page_title.
ls_control-page_layout = iv_page_layout.
ls_control-page_menu = io_page_menu.
ls_control-page_menu_provider = ii_page_menu_provider.
ls_control-page_title_provider = ii_page_title_provider.
ls_control-extra_css_url = iv_extra_css_url.
ls_control-extra_js_url = iv_extra_js_url.
ls_control-show_as_modal = iv_show_as_modal.
IF ls_control-page_menu_provider IS NOT BOUND. " try component itself
TRY.
ls_control-page_menu_provider ?= ii_child_component.
CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDIF.
IF ls_control-page_title_provider IS NOT BOUND. " try component itself
TRY.
ls_control-page_title_provider ?= ii_child_component.
CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDIF.
CREATE OBJECT lo_page
EXPORTING
ii_child_component = ii_child_component
is_control = ls_control.
ri_page_wrap = lo_page.
ENDMETHOD.
METHOD detect_menu_provider.
TRY.
ri_ref ?= mi_child.
CATCH cx_sy_move_cast_error.
ENDTRY.
ENDMETHOD.
METHOD detect_modal.
DATA li_modal TYPE REF TO zif_abapgit_gui_modal.
TRY.
li_modal ?= mi_child.
rv_is_modal = li_modal->is_modal( ).
CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
METHOD detect_title_provider.
TRY.
ri_ref ?= mi_child.
CATCH cx_sy_move_cast_error ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
METHOD get_child.
ri_child = mi_child.
ENDMETHOD.
METHOD render_content.
IF mi_child IS BOUND.
ri_html = mi_child->render( ).
ENDIF.
ENDMETHOD.
ENDCLASS.