CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT
INHERITING FROM zcl_abapgit_gui_component
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES:
zif_abapgit_gui_renderable,
zif_abapgit_gui_event_handler,
zif_abapgit_gui_error_handler.
METHODS:
constructor RAISING zcx_abapgit_exception.
PROTECTED SECTION.
TYPES:
BEGIN OF ty_control,
page_title TYPE string,
page_menu TYPE REF TO zcl_abapgit_html_toolbar,
END OF ty_control .
DATA ms_control TYPE ty_control .
METHODS render_content
ABSTRACT
RETURNING
VALUE(ri_html) TYPE REF TO zif_abapgit_html
RAISING
zcx_abapgit_exception .
PRIVATE SECTION.
DATA:
mo_settings TYPE REF TO zcl_abapgit_settings,
mx_error TYPE REF TO zcx_abapgit_exception,
mo_exception_viewer TYPE REF TO zcl_abapgit_exception_viewer.
METHODS render_deferred_parts
IMPORTING
ii_html TYPE REF TO zif_abapgit_html
iv_part_category TYPE string
RAISING
zcx_abapgit_exception.
METHODS html_head
RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html.
METHODS title
RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html.
METHODS footer
RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html.
METHODS render_link_hints
IMPORTING
ii_html TYPE REF TO zif_abapgit_html
RAISING
zcx_abapgit_exception.
METHODS render_command_palettes
IMPORTING
ii_html TYPE REF TO zif_abapgit_html
RAISING
zcx_abapgit_exception.
METHODS render_hotkey_overview
RETURNING
VALUE(ro_html) TYPE REF TO zif_abapgit_html
RAISING
zcx_abapgit_exception.
METHODS render_error_message_box
RETURNING
VALUE(ro_html) TYPE REF TO zcl_abapgit_html
RAISING
zcx_abapgit_exception.
METHODS scripts
RETURNING
VALUE(ro_html) TYPE REF TO zcl_abapgit_html
RAISING
zcx_abapgit_exception.
ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
ENDMETHOD.
METHOD footer.
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
ri_html->add( '
' ).
ENDMETHOD.
METHOD html_head.
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
ri_html->add( '' ). "#EC NOTEXT
ri_html->add( '' ). "#EC NOTEXT
ri_html->add( '' ). "#EC NOTEXT
ri_html->add( 'abapGit' ). "#EC NOTEXT
ri_html->add( '' ).
ri_html->add( '' ).
" Themes
ri_html->add( '' ). " Theme basis
CASE mo_settings->get_ui_theme( ).
WHEN zcl_abapgit_settings=>c_ui_theme-dark.
ri_html->add( '' ).
WHEN zcl_abapgit_settings=>c_ui_theme-belize.
ri_html->add( '' ).
ENDCASE.
ri_html->add( '' ). "#EC NOTEXT
CASE mo_settings->get_icon_scaling( ). " Enforce icon scaling
WHEN mo_settings->c_icon_scaling-large.
ri_html->add( '' ).
WHEN mo_settings->c_icon_scaling-small.
ri_html->add( '' ).
ENDCASE.
ri_html->add( '' ). "#EC NOTEXT
ENDMETHOD.
METHOD render_command_palettes.
ii_html->add( 'var gCommandPalette = new CommandPalette(enumerateToolbarActions, {' ).
ii_html->add( ' toggleKey: "F1",' ).
ii_html->add( ' hotkeyDescription: "Command ..."' ).
ii_html->add( '});' ).
ENDMETHOD.
METHOD render_deferred_parts.
DATA lt_parts TYPE zif_abapgit_html=>tty_table_of.
DATA li_part LIKE LINE OF lt_parts.
lt_parts = gui_services( )->get_html_parts( )->get_parts( iv_part_category ).
LOOP AT lt_parts INTO li_part.
ii_html->add( li_part ).
ENDLOOP.
ENDMETHOD.
METHOD render_error_message_box.
" You should remember that the we have to instantiate ro_html even
" it's overwritten further down. Because ADD checks whether it's
" bound.
CREATE OBJECT ro_html.
" You should remember that we render the message panel only
" if we have an error.
IF mx_error IS NOT BOUND.
RETURN.
ENDIF.
ro_html = zcl_abapgit_gui_chunk_lib=>render_error_message_box( mx_error ).
" You should remember that the exception viewer dispatches the events of
" error message panel
CREATE OBJECT mo_exception_viewer
EXPORTING
ix_error = mx_error.
" You should remember that we render the message panel just once
" for each exception/error text.
CLEAR:
mx_error.
ENDMETHOD.
METHOD render_hotkey_overview.
DATA lo_hotkeys_component TYPE REF TO zif_abapgit_gui_renderable.
lo_hotkeys_component ?= gui_services( )->get_hotkeys_ctl( ). " Mmmm ...
ro_html = lo_hotkeys_component->render( ).
ENDMETHOD.
METHOD render_link_hints.
DATA: lv_link_hint_key TYPE char01.
lv_link_hint_key = mo_settings->get_link_hint_key( ).
IF mo_settings->get_link_hints_enabled( ) = abap_true AND lv_link_hint_key IS NOT INITIAL.
ii_html->add( |activateLinkHints("{ lv_link_hint_key }");| ).
ii_html->add( |setInitialFocusWithQuerySelector('a span', true);| ).
ii_html->add( |enableArrowListNavigation();| ).
ENDIF.
ENDMETHOD.
METHOD scripts.
CREATE OBJECT ro_html.
render_deferred_parts(
ii_html = ro_html
iv_part_category = c_html_parts-scripts ).
render_link_hints( ro_html ).
render_command_palettes( ro_html ).
ENDMETHOD.
METHOD title.
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
ri_html->add( '