Gui internals refactoring (#2180)

* GUI internals refactoring

* unify string conversion calls part1
This commit is contained in:
sbcgua 2018-12-04 06:33:35 +01:00 committed by Lars Hvam
parent 746b114223
commit 4dee27fc1e
13 changed files with 265 additions and 182 deletions

View File

@ -1,14 +1,9 @@
CLASS zcl_abapgit_gui DEFINITION CLASS zcl_abapgit_gui DEFINITION
PUBLIC PUBLIC
FINAL FINAL .
CREATE PRIVATE .
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS: get_instance
RETURNING VALUE(ro_gui) TYPE REF TO zcl_abapgit_gui
RAISING zcx_abapgit_exception.
METHODS go_home METHODS go_home
RAISING zcx_abapgit_exception. RAISING zcx_abapgit_exception.
@ -20,9 +15,14 @@ CLASS zcl_abapgit_gui DEFINITION
METHODS on_event FOR EVENT sapevent OF cl_gui_html_viewer METHODS on_event FOR EVENT sapevent OF cl_gui_html_viewer
IMPORTING action frame getdata postdata query_table. IMPORTING action frame getdata postdata query_table.
PRIVATE SECTION. METHODS constructor
IMPORTING
ii_router TYPE REF TO zif_abapgit_gui_router
ii_asset_man TYPE REF TO zif_abapgit_gui_asset_manager
RAISING
zcx_abapgit_exception.
CLASS-DATA: go_gui TYPE REF TO zcl_abapgit_gui. PRIVATE SECTION.
TYPES: BEGIN OF ty_page_stack, TYPES: BEGIN OF ty_page_stack,
page TYPE REF TO zif_abapgit_gui_page, page TYPE REF TO zif_abapgit_gui_page,
@ -31,13 +31,10 @@ CLASS zcl_abapgit_gui DEFINITION
DATA: mi_cur_page TYPE REF TO zif_abapgit_gui_page, DATA: mi_cur_page TYPE REF TO zif_abapgit_gui_page,
mt_stack TYPE STANDARD TABLE OF ty_page_stack, mt_stack TYPE STANDARD TABLE OF ty_page_stack,
mo_router TYPE REF TO zcl_abapgit_gui_router, mi_router TYPE REF TO zif_abapgit_gui_router,
mo_asset_man TYPE REF TO zcl_abapgit_gui_asset_manager, mi_asset_man TYPE REF TO zif_abapgit_gui_asset_manager,
mo_html_viewer TYPE REF TO cl_gui_html_viewer. mo_html_viewer TYPE REF TO cl_gui_html_viewer.
METHODS constructor
RAISING zcx_abapgit_exception.
METHODS startup METHODS startup
RAISING zcx_abapgit_exception. RAISING zcx_abapgit_exception.
@ -114,33 +111,23 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
METHOD cache_asset. METHOD cache_asset.
DATA: lv_xstr TYPE xstring, DATA: lv_xstr TYPE xstring,
lt_xdata TYPE TABLE OF w3_mime, " RAW255 lt_xdata TYPE lvc_t_mime,
lv_size TYPE int4. lv_size TYPE int4.
ASSERT iv_text IS SUPPLIED OR iv_xdata IS SUPPLIED. ASSERT iv_text IS SUPPLIED OR iv_xdata IS SUPPLIED.
IF iv_text IS SUPPLIED. " String input IF iv_text IS SUPPLIED. " String input
lv_xstr = zcl_abapgit_gui_asset_manager=>string_to_xstring( iv_text ).
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = iv_text
IMPORTING
buffer = lv_xstr
EXCEPTIONS
OTHERS = 1.
ASSERT sy-subrc = 0.
ELSE. " Raw input ELSE. " Raw input
lv_xstr = iv_xdata. lv_xstr = iv_xdata.
ENDIF. ENDIF.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' zcl_abapgit_gui_asset_manager=>xstring_to_bintab(
EXPORTING EXPORTING
buffer = lv_xstr iv_xstr = lv_xstr
IMPORTING IMPORTING
output_length = lv_size ev_size = lv_size
TABLES et_bintab = lt_xdata ).
binary_tab = lt_xdata.
mo_html_viewer->load_data( mo_html_viewer->load_data(
EXPORTING EXPORTING
@ -187,6 +174,8 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
METHOD constructor. METHOD constructor.
mi_router = ii_router.
mi_asset_man = ii_asset_man.
startup( ). startup( ).
ENDMETHOD. ENDMETHOD.
@ -196,20 +185,11 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
rv_page_name = rv_page_name =
cl_abap_classdescr=>describe_by_object_ref( mi_cur_page cl_abap_classdescr=>describe_by_object_ref( mi_cur_page
)->get_relative_name( ). )->get_relative_name( ).
SHIFT rv_page_name LEFT DELETING LEADING 'LCL_GUI_'.
ENDIF." ELSE - return is empty => initial page ENDIF." ELSE - return is empty => initial page
ENDMETHOD. ENDMETHOD.
METHOD get_instance.
IF go_gui IS INITIAL.
CREATE OBJECT go_gui.
ENDIF.
ro_gui = go_gui.
ENDMETHOD.
METHOD go_home. METHOD go_home.
on_event( action = |{ zif_abapgit_definitions=>c_action-go_main }| ). " doesn't accept strings directly on_event( action = |{ zif_abapgit_definitions=>c_action-go_main }| ). " doesn't accept strings directly
@ -237,7 +217,7 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
ENDIF. ENDIF.
IF lv_state IS INITIAL. IF lv_state IS INITIAL.
mo_router->on_event( mi_router->on_event(
EXPORTING EXPORTING
iv_action = iv_action iv_action = iv_action
iv_prev_page = get_current_page_name( ) iv_prev_page = get_current_page_name( )
@ -306,36 +286,22 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
DATA: lt_events TYPE cntl_simple_events, DATA: lt_events TYPE cntl_simple_events,
ls_event LIKE LINE OF lt_events, ls_event LIKE LINE OF lt_events,
lt_assets TYPE zif_abapgit_definitions=>tt_web_assets. lt_assets TYPE zif_abapgit_gui_asset_manager=>tt_web_assets.
FIELD-SYMBOLS <ls_asset> LIKE LINE OF lt_assets. FIELD-SYMBOLS <ls_asset> LIKE LINE OF lt_assets.
CREATE OBJECT mo_router.
CREATE OBJECT mo_asset_man.
CREATE OBJECT mo_html_viewer CREATE OBJECT mo_html_viewer
EXPORTING EXPORTING
query_table_disabled = abap_true query_table_disabled = abap_true
parent = cl_gui_container=>screen0. parent = cl_gui_container=>screen0.
cache_asset( iv_xdata = mo_asset_man->get_asset( 'css_common' ) lt_assets = mi_asset_man->get_all_assets( ).
iv_url = 'css/common.css' LOOP AT lt_assets ASSIGNING <ls_asset>.
iv_type = 'text' cache_asset( iv_xdata = <ls_asset>-content
iv_subtype = 'css' ). iv_url = <ls_asset>-url
iv_type = <ls_asset>-type
cache_asset( iv_xdata = mo_asset_man->get_asset( 'js_common' ) iv_subtype = <ls_asset>-subtype ).
iv_url = 'js/common.js' ENDLOOP.
iv_type = 'text'
iv_subtype = 'javascript' ).
lt_assets = mo_asset_man->get_images( ).
IF lines( lt_assets ) > 0.
LOOP AT lt_assets ASSIGNING <ls_asset>.
cache_asset( iv_xdata = <ls_asset>-content
iv_url = <ls_asset>-url
iv_type = 'image'
iv_subtype = 'png' ).
ENDLOOP.
ENDIF.
ls_event-eventid = mo_html_viewer->m_id_sapevent. ls_event-eventid = mo_html_viewer->m_id_sapevent.
ls_event-appl_event = abap_true. ls_event-appl_event = abap_true.

View File

@ -7,6 +7,7 @@
<VERSION>1</VERSION> <VERSION>1</VERSION>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>GUI</DESCRIPT> <DESCRIPT>GUI</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE> <STATE>1</STATE>
<CLSFINAL>X</CLSFINAL> <CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>

View File

@ -2,31 +2,54 @@ CLASS zcl_abapgit_gui_asset_manager DEFINITION PUBLIC FINAL CREATE PUBLIC .
PUBLIC SECTION. PUBLIC SECTION.
METHODS get_asset INTERFACES zif_abapgit_gui_asset_manager.
IMPORTING iv_asset_name TYPE string
RETURNING VALUE(rv_data) TYPE xstring
RAISING zcx_abapgit_exception.
METHODS get_images CLASS-METHODS string_to_xstring
RETURNING VALUE(rt_images) TYPE zif_abapgit_definitions=>tt_web_assets. IMPORTING
iv_str TYPE string
RETURNING
VALUE(rv_xstr) TYPE xstring.
CLASS-METHODS get_webfont_link CLASS-METHODS base64_to_xstring
RETURNING VALUE(rv_link) TYPE string. IMPORTING
iv_base64 TYPE string
RETURNING
VALUE(rv_xstr) TYPE xstring.
CLASS-METHODS bintab_to_xstring
IMPORTING
it_bintab TYPE lvc_t_mime
iv_size TYPE i
RETURNING
VALUE(rv_xstr) TYPE xstring.
CLASS-METHODS xstring_to_bintab
IMPORTING
iv_xstr TYPE xstring
EXPORTING
ev_size TYPE i
et_bintab TYPE lvc_t_mime.
PRIVATE SECTION. PRIVATE SECTION.
METHODS get_inline_asset METHODS get_textlike_asset
IMPORTING iv_asset_name TYPE string IMPORTING
RETURNING VALUE(rv_data) TYPE xstring iv_asset_url TYPE string
RAISING zcx_abapgit_exception. RETURNING
VALUE(rs_asset) TYPE zif_abapgit_gui_asset_manager=>ty_web_asset
RAISING
zcx_abapgit_exception.
METHODS get_mime_asset METHODS get_mime_asset
IMPORTING iv_asset_name TYPE c IMPORTING
RETURNING VALUE(rv_data) TYPE xstring iv_mime_name TYPE c
RAISING zcx_abapgit_exception. RETURNING
VALUE(rv_xdata) TYPE xstring
RAISING
zcx_abapgit_exception.
METHODS get_inline_images METHODS get_inline_images
RETURNING VALUE(rt_images) TYPE zif_abapgit_definitions=>tt_web_assets. RETURNING VALUE(rt_images) TYPE zif_abapgit_gui_asset_manager=>tt_web_assets.
ENDCLASS. ENDCLASS.
@ -34,97 +57,77 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION. CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION.
METHOD zif_abapgit_gui_asset_manager~get_all_assets.
METHOD get_asset. DATA:
lt_assets TYPE zif_abapgit_gui_asset_manager=>tt_web_assets,
ls_asset LIKE LINE OF lt_assets.
DATA: lv_asset_name TYPE string, ls_asset = get_textlike_asset( 'css/common.css' ).
lv_mime_name TYPE wwwdatatab-objid. APPEND ls_asset TO rt_assets.
ls_asset = get_textlike_asset( 'js/common.js' ).
APPEND ls_asset TO rt_assets.
lv_asset_name = to_upper( iv_asset_name ). lt_assets = get_inline_images( ).
APPEND LINES OF lt_assets TO rt_assets.
CASE lv_asset_name.
WHEN 'CSS_COMMON'.
lv_mime_name = 'ZABAPGIT_CSS_COMMON'.
WHEN 'JS_COMMON'.
lv_mime_name = 'ZABAPGIT_JS_COMMON'.
WHEN OTHERS.
zcx_abapgit_exception=>raise( |Improper resource name: { iv_asset_name }| ).
ENDCASE.
" Inline is default (for older AG snapshots to work)
rv_data = get_inline_asset( lv_asset_name ).
IF rv_data IS INITIAL.
rv_data = get_mime_asset( lv_mime_name ). " Get MIME object
ENDIF.
IF rv_data IS INITIAL.
zcx_abapgit_exception=>raise( |Failed to get GUI resource: { iv_asset_name }| ).
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD get_images. METHOD get_textlike_asset.
FIELD-SYMBOLS <ls_image> LIKE LINE OF rt_images.
rt_images = get_inline_images( ).
" Convert to xstring
LOOP AT rt_images ASSIGNING <ls_image>.
CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = <ls_image>-base64
IMPORTING
bindata = <ls_image>-content
EXCEPTIONS
OTHERS = 1.
ASSERT sy-subrc = 0. " Image data error
ENDLOOP.
ENDMETHOD.
METHOD get_inline_asset.
* used by abapmerge * used by abapmerge
DEFINE _inline. DEFINE _inline.
APPEND &1 TO lt_data. APPEND &1 TO lt_data.
END-OF-DEFINITION. END-OF-DEFINITION.
DATA: lt_data TYPE zif_abapgit_definitions=>ty_string_tt, DATA:
lv_str TYPE string. lt_data TYPE string_table,
lv_mime_name TYPE wwwdatatab-objid,
lv_str TYPE string.
CASE iv_asset_name. CASE iv_asset_url.
WHEN 'CSS_COMMON'. WHEN 'css/common.css'.
rs_asset-url = iv_asset_url.
rs_asset-type = 'text'.
rs_asset-subtype = 'css'.
lv_mime_name = 'ZABAPGIT_CSS_COMMON'.
" @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'. " @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'.
WHEN 'JS_COMMON'. WHEN 'js/common.js'.
rs_asset-url = iv_asset_url.
rs_asset-type = 'text'.
rs_asset-subtype = 'javascript'.
lv_mime_name = 'ZABAPGIT_JS_COMMON'.
" @@abapmerge include zabapgit_js_common.w3mi.data.js > _inline '$$'. " @@abapmerge include zabapgit_js_common.w3mi.data.js > _inline '$$'.
WHEN OTHERS. WHEN OTHERS.
zcx_abapgit_exception=>raise( |No inline resource: { iv_asset_name }| ). zcx_abapgit_exception=>raise( |No inline resource: { iv_asset_url }| ).
ENDCASE. ENDCASE.
CONCATENATE LINES OF lt_data INTO lv_str SEPARATED BY zif_abapgit_definitions=>c_newline. IF lt_data IS NOT INITIAL.
CONCATENATE LINES OF lt_data INTO lv_str SEPARATED BY zif_abapgit_definitions=>c_newline.
rs_asset-content = string_to_xstring( lv_str ).
ELSE.
rs_asset-content = get_mime_asset( lv_mime_name ).
ENDIF.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING' IF rs_asset-content IS INITIAL.
EXPORTING zcx_abapgit_exception=>raise( |Failed to get GUI resource: { iv_asset_url }| ).
text = lv_str ENDIF.
IMPORTING
buffer = rv_data
EXCEPTIONS
OTHERS = 1.
ASSERT sy-subrc = 0.
ENDMETHOD. ENDMETHOD.
METHOD get_inline_images. METHOD get_inline_images.
DATA ls_image TYPE zif_abapgit_definitions=>ty_web_asset. DATA:
lv_base64 TYPE string,
ls_image LIKE LINE OF rt_images.
* see https://github.com/larshp/abapGit/issues/201 for source SVG * see https://github.com/larshp/abapGit/issues/201 for source SVG
ls_image-url = 'img/logo' ##NO_TEXT. ls_image-url = 'img/logo' ##NO_TEXT.
ls_image-base64 = ls_image-type = 'image'.
ls_image-subtype = 'pmg'.
lv_base64 =
'iVBORw0KGgoAAAANSUhEUgAAAKMAAAAoCAYAAACSG0qbAAAABHNCSVQICAgIfAhkiAAA' 'iVBORw0KGgoAAAANSUhEUgAAAKMAAAAoCAYAAACSG0qbAAAABHNCSVQICAgIfAhkiAAA'
&& 'AAlwSFlzAAAEJQAABCUBprHeCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9y' && 'AAlwSFlzAAAEJQAABCUBprHeCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9y'
&& 'Z5vuPBoAAA8VSURBVHic7Zx7cJzVeYef31nJAtvYko1JjM3FYHlXimwZkLWyLEMcwIGQ' && 'Z5vuPBoAAA8VSURBVHic7Zx7cJzVeYef31nJAtvYko1JjM3FYHlXimwZkLWyLEMcwIGQ'
@ -204,6 +207,7 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION.
&& 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v' && 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v'
&& '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f' && '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f'
&& 'cpUAAAAASUVORK5CYII='. && 'cpUAAAAASUVORK5CYII='.
ls_image-content = base64_to_xstring( lv_base64 ).
APPEND ls_image TO rt_images. APPEND ls_image TO rt_images.
ENDMETHOD. ENDMETHOD.
@ -217,7 +221,7 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION.
lt_w3mime TYPE STANDARD TABLE OF w3mime. lt_w3mime TYPE STANDARD TABLE OF w3mime.
ls_key-relid = 'MI'. ls_key-relid = 'MI'.
ls_key-objid = iv_asset_name. ls_key-objid = iv_mime_name.
" Get exact file size " Get exact file size
CALL FUNCTION 'WWWPARAMS_READ' CALL FUNCTION 'WWWPARAMS_READ'
@ -250,25 +254,64 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION.
RETURN. RETURN.
ENDIF. ENDIF.
rv_xdata = bintab_to_xstring(
iv_size = lv_size
it_bintab = lt_w3mime ).
ENDMETHOD.
METHOD string_to_xstring.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = iv_str
IMPORTING
buffer = rv_xstr
EXCEPTIONS
OTHERS = 1.
ASSERT sy-subrc = 0.
ENDMETHOD.
METHOD base64_to_xstring.
CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = iv_base64
IMPORTING
bindata = rv_xstr
EXCEPTIONS
OTHERS = 1.
ASSERT sy-subrc = 0.
ENDMETHOD.
METHOD bintab_to_xstring.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING EXPORTING
input_length = lv_size input_length = iv_size
IMPORTING IMPORTING
buffer = rv_data buffer = rv_xstr
TABLES TABLES
binary_tab = lt_w3mime binary_tab = it_bintab
EXCEPTIONS EXCEPTIONS
failed = 1 ##FM_SUBRC_OK. failed = 1 ##FM_SUBRC_OK.
ASSERT sy-subrc = 0.
ENDMETHOD. ENDMETHOD.
METHOD xstring_to_bintab.
METHOD get_webfont_link. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
rv_link = '<link rel="stylesheet"' buffer = iv_xstr
&& ' type="text/css" href="' IMPORTING
&& 'https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/font/octicons.min.css' output_length = ev_size
&& '">'. "#EC NOTEXT TABLES
binary_tab = et_bintab.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -163,6 +163,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
METHOD html_head. METHOD html_head.
DATA lv_font TYPE string.
CREATE OBJECT ro_html. CREATE OBJECT ro_html.
ro_html->add( '<head>' ). "#EC NOTEXT ro_html->add( '<head>' ). "#EC NOTEXT
@ -174,7 +176,10 @@ CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
ro_html->add( '<link rel="stylesheet" type="text/css" href="css/common.css">' ). ro_html->add( '<link rel="stylesheet" type="text/css" href="css/common.css">' ).
ro_html->add( '<script type="text/javascript" src="js/common.js"></script>' ). "#EC NOTEXT ro_html->add( '<script type="text/javascript" src="js/common.js"></script>' ). "#EC NOTEXT
ro_html->add( zcl_abapgit_gui_asset_manager=>get_webfont_link( ) ). " Web fonts lv_font = |<link rel="stylesheet" type="text/css" href="|
&& 'https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/font/octicons.min.css'
&& '">'. "#EC NOTEXT
ro_html->add( lv_font ). " Web fonts
ro_html->add( '</head>' ). "#EC NOTEXT ro_html->add( '</head>' ). "#EC NOTEXT

View File

@ -5,14 +5,7 @@ CLASS zcl_abapgit_gui_router DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
METHODS on_event INTERFACES zif_abapgit_gui_router.
IMPORTING iv_action TYPE clike
iv_prev_page TYPE clike
iv_getdata TYPE clike OPTIONAL
it_postdata TYPE cnht_post_data_tab OPTIONAL
EXPORTING ei_page TYPE REF TO zif_abapgit_gui_page
ev_state TYPE i
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -417,7 +410,7 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD on_event. METHOD zif_abapgit_gui_router~on_event.
DATA: ls_event_data TYPE ty_event_data. DATA: ls_event_data TYPE ty_event_data.

View File

@ -17,11 +17,19 @@ CLASS zcl_abapgit_ui_factory DEFINITION
RETURNING RETURNING
VALUE(ri_gui_functions) TYPE REF TO zif_abapgit_gui_functions. VALUE(ri_gui_functions) TYPE REF TO zif_abapgit_gui_functions.
CLASS-METHODS: get_gui
RETURNING
VALUE(ro_gui) TYPE REF TO zcl_abapgit_gui
RAISING
zcx_abapgit_exception.
PRIVATE SECTION. PRIVATE SECTION.
CLASS-DATA: CLASS-DATA:
gi_popups TYPE REF TO zif_abapgit_popups, gi_popups TYPE REF TO zif_abapgit_popups,
gi_tag_popups TYPE REF TO zif_abapgit_tag_popups, gi_tag_popups TYPE REF TO zif_abapgit_tag_popups,
gi_gui_functions TYPE REF TO zif_abapgit_gui_functions. gi_gui_functions TYPE REF TO zif_abapgit_gui_functions,
go_gui TYPE REF TO zcl_abapgit_gui.
ENDCLASS. ENDCLASS.
@ -60,4 +68,22 @@ CLASS zcl_abapgit_ui_factory IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_gui.
DATA:
li_router TYPE REF TO zif_abapgit_gui_router,
li_asset_man TYPE REF TO zif_abapgit_gui_asset_manager.
IF go_gui IS INITIAL.
CREATE OBJECT li_router TYPE zcl_abapgit_gui_router.
CREATE OBJECT li_asset_man TYPE zcl_abapgit_gui_asset_manager.
CREATE OBJECT go_gui
EXPORTING
ii_router = li_router
ii_asset_man = li_asset_man.
ENDIF.
ro_gui = go_gui.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -0,0 +1,20 @@
INTERFACE zif_abapgit_gui_asset_manager
PUBLIC .
TYPES:
BEGIN OF ty_web_asset,
url TYPE w3url,
type TYPE char50,
subtype TYPE char50,
content TYPE xstring,
END OF ty_web_asset .
TYPES:
tt_web_assets TYPE STANDARD TABLE OF ty_web_asset WITH DEFAULT KEY .
METHODS get_all_assets
RETURNING
VALUE(rt_assets) TYPE tt_web_assets
RAISING
zcx_abapgit_exception.
ENDINTERFACE.

View File

@ -0,0 +1,16 @@
<?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_ASSET_MANAGER</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Abapgit GUI asset manager</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,17 @@
INTERFACE zif_abapgit_gui_router
PUBLIC .
METHODS on_event
IMPORTING
iv_action TYPE clike
iv_prev_page TYPE clike
iv_getdata TYPE clike OPTIONAL
it_postdata TYPE cnht_post_data_tab OPTIONAL
EXPORTING
ei_page TYPE REF TO zif_abapgit_gui_page
ev_state TYPE i
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel.
ENDINTERFACE.

View File

@ -0,0 +1,16 @@
<?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_ROUTER</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Abapgit GUI router</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -36,7 +36,7 @@ FORM open_gui RAISING zcx_abapgit_exception.
ELSE. ELSE.
zcl_abapgit_services_abapgit=>prepare_gui_startup( ). zcl_abapgit_services_abapgit=>prepare_gui_startup( ).
zcl_abapgit_gui=>get_instance( )->go_home( ). zcl_abapgit_ui_factory=>get_gui( )->go_home( ).
CALL SELECTION-SCREEN 1001. " trigger screen CALL SELECTION-SCREEN 1001. " trigger screen
ENDIF. ENDIF.
@ -127,7 +127,7 @@ ENDFORM.
FORM exit RAISING zcx_abapgit_exception. FORM exit RAISING zcx_abapgit_exception.
CASE sy-ucomm. CASE sy-ucomm.
WHEN 'CBAC'. "Back WHEN 'CBAC'. "Back
IF zcl_abapgit_gui=>get_instance( )->back( ) IS INITIAL. IF zcl_abapgit_ui_factory=>get_gui( )->back( ) IS INITIAL.
LEAVE TO SCREEN 1001. LEAVE TO SCREEN 1001.
ENDIF. ENDIF.
ENDCASE. ENDCASE.

View File

@ -149,14 +149,6 @@ INTERFACE zif_abapgit_definitions PUBLIC.
delete_tadir TYPE abap_bool, delete_tadir TYPE abap_bool,
ddic TYPE abap_bool, ddic TYPE abap_bool,
END OF ty_metadata . END OF ty_metadata .
TYPES:
BEGIN OF ty_web_asset,
url TYPE w3url,
base64 TYPE string,
content TYPE xstring,
END OF ty_web_asset .
TYPES:
tt_web_assets TYPE STANDARD TABLE OF ty_web_asset WITH DEFAULT KEY .
TYPES: TYPES:
BEGIN OF ty_repo_file, BEGIN OF ty_repo_file,
path TYPE string, path TYPE string,

View File

@ -18,12 +18,6 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>TT_REPO_FILES</DESCRIPT> <DESCRIPT>TT_REPO_FILES</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZIF_ABAPGIT_DEFINITIONS</CLSNAME>
<CMPNAME>TT_WEB_ASSETS</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>TT_WEB_ASSETS</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CLSNAME>ZIF_ABAPGIT_DEFINITIONS</CLSNAME> <CLSNAME>ZIF_ABAPGIT_DEFINITIONS</CLSNAME>
<CMPNAME>TY_BITBYTE</CMPNAME> <CMPNAME>TY_BITBYTE</CMPNAME>
@ -222,12 +216,6 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>TY_TYPE</DESCRIPT> <DESCRIPT>TY_TYPE</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZIF_ABAPGIT_DEFINITIONS</CLSNAME>
<CMPNAME>TY_WEB_ASSET</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>TY_WEB_ASSET</DESCRIPT>
</SEOCOMPOTX>
</DESCRIPTIONS> </DESCRIPTIONS>
</asx:values> </asx:values>
</asx:abap> </asx:abap>