Page menu provider for GUI page (and HOC) (#5860)

Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
Alexander Tsybulsky 2022-11-07 18:31:41 +02:00 committed by GitHub
parent 1c236e042d
commit 503bb2ec50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 5 deletions

View File

@ -24,6 +24,7 @@ CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT
page_layout TYPE string,
page_title TYPE string,
page_menu TYPE REF TO zcl_abapgit_html_toolbar,
page_menu_provider TYPE REF TO zif_abapgit_gui_menu_provider,
END OF ty_control .
DATA ms_control TYPE ty_control .
@ -53,7 +54,9 @@ CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT
VALUE(ri_html) TYPE REF TO zif_abapgit_html .
METHODS title
RETURNING
VALUE(ri_html) TYPE REF TO zif_abapgit_html .
VALUE(ri_html) TYPE REF TO zif_abapgit_html
RAISING
zcx_abapgit_exception .
METHODS footer
IMPORTING
!iv_time TYPE ty_time
@ -88,7 +91,7 @@ ENDCLASS.
CLASS zcl_abapgit_gui_page IMPLEMENTATION.
CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
METHOD constructor.
@ -264,6 +267,13 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION.
METHOD title.
DATA lo_page_menu LIKE ms_control-page_menu.
lo_page_menu = ms_control-page_menu.
IF lo_page_menu IS NOT BOUND AND ms_control-page_menu_provider IS BOUND.
lo_page_menu = ms_control-page_menu_provider->get_menu( ).
ENDIF.
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
ri_html->add( '<div id="header">' ).
@ -275,9 +285,9 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION.
ri_html->add( |<div class="page-title"><span class="spacer">&#x25BA;</span>{ ms_control-page_title }</div>| ).
IF ms_control-page_menu IS BOUND.
IF lo_page_menu IS BOUND.
ri_html->add( '<div class="float-right">' ).
ri_html->add( ms_control-page_menu->render( iv_right = abap_true ) ).
ri_html->add( lo_page_menu->render( iv_right = abap_true ) ).
ri_html->add( '</div>' ).
ENDIF.

View File

@ -11,6 +11,7 @@ CLASS zcl_abapgit_gui_page_hoc DEFINITION
!ii_child_component TYPE REF TO zif_abapgit_gui_renderable
!iv_page_title TYPE string
!io_page_menu TYPE REF TO zcl_abapgit_html_toolbar OPTIONAL
!ii_page_menu_provider TYPE REF TO zif_abapgit_gui_menu_provider OPTIONAL
RETURNING
VALUE(ri_page_wrap) TYPE REF TO zif_abapgit_gui_renderable
RAISING
@ -27,7 +28,7 @@ ENDCLASS.
CLASS zcl_abapgit_gui_page_hoc IMPLEMENTATION.
CLASS ZCL_ABAPGIT_GUI_PAGE_HOC IMPLEMENTATION.
METHOD create.
@ -37,6 +38,7 @@ CLASS zcl_abapgit_gui_page_hoc IMPLEMENTATION.
CREATE OBJECT lo_page.
lo_page->ms_control-page_title = iv_page_title.
lo_page->ms_control-page_menu = io_page_menu.
lo_page->ms_control-page_menu_provider = ii_page_menu_provider.
lo_page->mi_child = ii_child_component.
ri_page_wrap = lo_page.

View File

@ -0,0 +1,10 @@
INTERFACE zif_abapgit_gui_menu_provider
PUBLIC .
METHODS get_menu
RETURNING
VALUE(ro_toolbar) TYPE REF TO zcl_abapgit_html_toolbar
RAISING
zcx_abapgit_exception.
ENDINTERFACE.

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_GUI_MENU_PROVIDER</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit menu provider</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>