mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
162 lines
4.1 KiB
ABAP
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.
|