mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Gui refactor, part 1 (#3289)
* gui component and event registering * remove iv_prev_page from event_handler if * constructors raising zcx_abapgit_exception * get_gui_services - UT friendly * linter fixes * more linter fixes * zif_gui_services stub all methods * linter fix Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
fce71de4d1
commit
0eb22a0c87
|
@ -5,14 +5,14 @@ CLASS zcl_abapgit_gui DEFINITION
|
|||
PUBLIC SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_event_state,
|
||||
not_handled TYPE c LENGTH 1 VALUE '0',
|
||||
re_render TYPE c LENGTH 1 VALUE '1',
|
||||
new_page TYPE c LENGTH 1 VALUE '2',
|
||||
go_back TYPE c LENGTH 1 VALUE '3',
|
||||
no_more_act TYPE c LENGTH 1 VALUE '4',
|
||||
new_page_w_bookmark TYPE c LENGTH 1 VALUE '5',
|
||||
go_back_to_bookmark TYPE c LENGTH 1 VALUE '6',
|
||||
new_page_replacing TYPE c LENGTH 1 VALUE '7',
|
||||
not_handled TYPE i VALUE 0,
|
||||
re_render TYPE i VALUE 1,
|
||||
new_page TYPE i VALUE 2,
|
||||
go_back TYPE i VALUE 3,
|
||||
no_more_act TYPE i VALUE 4,
|
||||
new_page_w_bookmark TYPE i VALUE 5,
|
||||
go_back_to_bookmark TYPE i VALUE 6,
|
||||
new_page_replacing TYPE i VALUE 7,
|
||||
END OF c_event_state .
|
||||
|
||||
CONSTANTS:
|
||||
|
@ -72,6 +72,7 @@ CLASS zcl_abapgit_gui DEFINITION
|
|||
|
||||
DATA: mi_cur_page TYPE REF TO zif_abapgit_gui_renderable,
|
||||
mt_stack TYPE STANDARD TABLE OF ty_page_stack,
|
||||
mt_event_handlers TYPE STANDARD TABLE OF REF TO zif_abapgit_gui_event_handler,
|
||||
mi_router TYPE REF TO zif_abapgit_gui_event_handler,
|
||||
mi_asset_man TYPE REF TO zif_abapgit_gui_asset_manager,
|
||||
mi_html_processor TYPE REF TO zif_abapgit_gui_html_processor,
|
||||
|
@ -91,10 +92,6 @@ CLASS zcl_abapgit_gui DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS get_current_page_name
|
||||
RETURNING
|
||||
VALUE(rv_page_name) TYPE string.
|
||||
|
||||
METHODS call_page
|
||||
IMPORTING
|
||||
ii_page TYPE REF TO zif_abapgit_gui_renderable
|
||||
|
@ -246,21 +243,13 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_current_page_name.
|
||||
|
||||
IF mi_cur_page IS BOUND.
|
||||
rv_page_name = cl_abap_classdescr=>describe_by_object_ref( mi_cur_page )->get_relative_name( ).
|
||||
ENDIF." ELSE - return is empty => initial page
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD go_home.
|
||||
|
||||
DATA ls_stack LIKE LINE OF mt_stack.
|
||||
|
||||
IF mi_router IS BOUND.
|
||||
CLEAR mt_stack.
|
||||
CLEAR: mt_stack, mt_event_handlers.
|
||||
APPEND mi_router TO mt_event_handlers.
|
||||
on_event( action = |{ c_action-go_home }| ). " doesn't accept strings directly
|
||||
ELSE.
|
||||
IF lines( mt_stack ) > 0.
|
||||
|
@ -288,38 +277,24 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
|
|||
METHOD handle_action.
|
||||
|
||||
DATA: lx_exception TYPE REF TO zcx_abapgit_exception,
|
||||
li_page_eh TYPE REF TO zif_abapgit_gui_event_handler,
|
||||
li_handler TYPE REF TO zif_abapgit_gui_event_handler,
|
||||
li_page TYPE REF TO zif_abapgit_gui_renderable,
|
||||
lv_state TYPE i.
|
||||
|
||||
TRY.
|
||||
" Home must be processed by router if it presents
|
||||
IF ( iv_action <> c_action-go_home OR mi_router IS NOT BOUND )
|
||||
AND mi_cur_page IS BOUND
|
||||
AND zcl_abapgit_gui_utils=>is_event_handler( mi_cur_page ) = abap_true.
|
||||
li_page_eh ?= mi_cur_page.
|
||||
li_page_eh->on_event(
|
||||
LOOP AT mt_event_handlers INTO li_handler.
|
||||
li_handler->on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = get_current_page_name( )
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
ei_page = li_page
|
||||
ev_state = lv_state ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_state IS INITIAL AND mi_router IS BOUND.
|
||||
mi_router->on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = get_current_page_name( )
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
ei_page = li_page
|
||||
ev_state = lv_state ).
|
||||
ENDIF.
|
||||
IF lv_state IS NOT INITIAL AND lv_state <> c_event_state-not_handled. " is handled
|
||||
EXIT.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
CASE lv_state.
|
||||
WHEN c_event_state-re_render.
|
||||
|
@ -327,9 +302,13 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
|
|||
WHEN c_event_state-new_page.
|
||||
call_page( li_page ).
|
||||
WHEN c_event_state-new_page_w_bookmark.
|
||||
call_page( ii_page = li_page iv_with_bookmark = abap_true ).
|
||||
call_page(
|
||||
ii_page = li_page
|
||||
iv_with_bookmark = abap_true ).
|
||||
WHEN c_event_state-new_page_replacing.
|
||||
call_page( ii_page = li_page iv_replacing = abap_true ).
|
||||
call_page(
|
||||
ii_page = li_page
|
||||
iv_replacing = abap_true ).
|
||||
WHEN c_event_state-go_back.
|
||||
back( ).
|
||||
WHEN c_event_state-go_back_to_bookmark.
|
||||
|
@ -393,6 +372,11 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'GUI error: no current page' ).
|
||||
ENDIF.
|
||||
|
||||
CLEAR mt_event_handlers.
|
||||
IF mi_router IS BOUND.
|
||||
APPEND mi_router TO mt_event_handlers.
|
||||
ENDIF.
|
||||
|
||||
li_html = mi_cur_page->render( ).
|
||||
lv_html = li_html->render( iv_no_indent_jscss = abap_true ).
|
||||
|
||||
|
@ -439,4 +423,19 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
|
|||
SET HANDLER me->on_event FOR mo_html_viewer.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_services~get_current_page_name.
|
||||
|
||||
IF mi_cur_page IS BOUND.
|
||||
rv_page_name = cl_abap_classdescr=>describe_by_object_ref( mi_cur_page )->get_relative_name( ).
|
||||
ENDIF." ELSE - return is empty => initial page
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_services~register_event_handler.
|
||||
ASSERT ii_event_handler IS BOUND.
|
||||
INSERT ii_event_handler INTO mt_event_handlers INDEX 1.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -21,6 +21,10 @@ CLASS ltcl_gui_mock IMPLEMENTATION.
|
|||
ms_last_cache_signature-type = iv_type && '/' && iv_subtype.
|
||||
ms_last_cache_signature-data = iv_text.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_gui_services~register_event_handler.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_gui_services~get_current_page_name.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_asset.
|
||||
rs_asset = ms_last_cache_signature.
|
||||
|
|
|
@ -4,7 +4,6 @@ INTERFACE zif_abapgit_gui_event_handler
|
|||
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
|
||||
|
|
|
@ -11,6 +11,15 @@ INTERFACE zif_abapgit_gui_services
|
|||
RETURNING
|
||||
VALUE(rv_url) TYPE w3url.
|
||||
|
||||
METHODS register_event_handler
|
||||
IMPORTING
|
||||
ii_event_handler TYPE REF TO zif_abapgit_gui_event_handler.
|
||||
|
||||
METHODS get_current_page_name
|
||||
RETURNING
|
||||
VALUE(rv_page_name) TYPE string.
|
||||
|
||||
|
||||
" For future refactoring
|
||||
" Potentially also: back, go_home, go_page, +some access to page stack
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@ CLASS zcl_abapgit_gui_page_db DEFINITION
|
|||
PUBLIC SECTION.
|
||||
INTERFACES: zif_abapgit_gui_page_hotkey.
|
||||
|
||||
METHODS constructor .
|
||||
METHODS constructor
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
METHODS zif_abapgit_gui_event_handler~on_event
|
||||
REDEFINITION .
|
||||
|
@ -187,11 +188,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
|
||||
DATA: ls_db TYPE zif_abapgit_persistence=>ty_content.
|
||||
|
@ -204,4 +200,9 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -7,7 +7,8 @@ CLASS zcl_abapgit_gui_page_db_dis DEFINITION
|
|||
INTERFACES: zif_abapgit_gui_page_hotkey.
|
||||
|
||||
METHODS: constructor
|
||||
IMPORTING is_key TYPE zif_abapgit_persistence=>ty_content.
|
||||
IMPORTING is_key TYPE zif_abapgit_persistence=>ty_content
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS: render_record_banner
|
||||
IMPORTING is_key TYPE zif_abapgit_persistence=>ty_content
|
||||
|
|
|
@ -9,7 +9,8 @@ CLASS zcl_abapgit_gui_page_db_edit DEFINITION
|
|||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
is_key TYPE zif_abapgit_persistence=>ty_content .
|
||||
is_key TYPE zif_abapgit_persistence=>ty_content
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
METHODS zif_abapgit_gui_event_handler~on_event
|
||||
REDEFINITION .
|
||||
|
@ -139,11 +140,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_EDIT IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
|
||||
DATA: ls_db TYPE zif_abapgit_persistence=>ty_content.
|
||||
|
@ -156,4 +152,9 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_EDIT IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
20
src/ui/zcl_abapgit_gui_component.clas.abap
Normal file
20
src/ui/zcl_abapgit_gui_component.clas.abap
Normal file
|
@ -0,0 +1,20 @@
|
|||
CLASS zcl_abapgit_gui_component DEFINITION ABSTRACT
|
||||
PUBLIC
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS constructor RAISING zcx_abapgit_exception.
|
||||
PROTECTED SECTION.
|
||||
DATA mi_gui_services TYPE REF TO zif_abapgit_gui_services.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_COMPONENT IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
mi_gui_services = zcl_abapgit_ui_factory=>get_gui_services( ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/ui/zcl_abapgit_gui_component.clas.xml
Normal file
16
src/ui/zcl_abapgit_gui_component.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_GUI_COMPONENT</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Abapgit GUI page component</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,4 +1,6 @@
|
|||
CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT CREATE PUBLIC.
|
||||
CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT
|
||||
INHERITING FROM zcl_abapgit_gui_component
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES:
|
||||
|
@ -19,7 +21,7 @@ CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT CREATE PUBLIC.
|
|||
VALUE(rt_hotkey) TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_with_name.
|
||||
|
||||
METHODS:
|
||||
constructor.
|
||||
constructor RAISING zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
TYPES: BEGIN OF ty_control,
|
||||
|
@ -144,6 +146,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
|
||||
super->constructor( ).
|
||||
mo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -463,10 +466,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-not_handled.
|
||||
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -480,6 +479,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
|
|||
FIELD-SYMBOLS:
|
||||
<ls_event> LIKE LINE OF lt_events.
|
||||
|
||||
mi_gui_services->register_event_handler( me ).
|
||||
|
||||
" Redirect
|
||||
IF ms_control-redirect_url IS NOT INITIAL.
|
||||
ri_html = redirect( ).
|
||||
|
@ -497,10 +498,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
|
|||
ri_html->add( '<body>' ). "#EC NOTEXT
|
||||
ri_html->add( title( ) ).
|
||||
ri_html->add( render_hotkey_overview( ) ).
|
||||
ri_html->add( render_content( ) ).
|
||||
|
||||
ri_html->add( render_content( ) ). " TODO -> render child
|
||||
|
||||
ri_html->add( render_error_message_box( ) ).
|
||||
|
||||
lt_events = me->get_events( ).
|
||||
lt_events = me->get_events( ). " TODO refactor ???
|
||||
LOOP AT lt_events ASSIGNING <ls_event>.
|
||||
ri_html->add( render_event_as_form( <ls_event> ) ).
|
||||
ENDLOOP.
|
||||
|
@ -508,7 +511,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION.
|
|||
ri_html->add( footer( ) ).
|
||||
ri_html->add( '</body>' ). "#EC NOTEXT
|
||||
|
||||
lo_script = scripts( ).
|
||||
lo_script = scripts( ). " TODO refactor
|
||||
|
||||
IF lo_script IS BOUND AND lo_script->is_empty( ) = abap_false.
|
||||
ri_html->add( '<script type="text/javascript">' ).
|
||||
|
|
|
@ -9,7 +9,8 @@ CLASS zcl_abapgit_gui_page_bkg DEFINITION
|
|||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
iv_key TYPE zif_abapgit_persistence=>ty_repo-key .
|
||||
iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
METHODS zif_abapgit_gui_event_handler~on_event
|
||||
REDEFINITION .
|
||||
|
@ -315,7 +316,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BKG IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
|
|
@ -7,7 +7,8 @@ CLASS zcl_abapgit_gui_page_bkg_run DEFINITION
|
|||
PUBLIC SECTION.
|
||||
INTERFACES: zif_abapgit_gui_page_hotkey.
|
||||
|
||||
METHODS constructor .
|
||||
METHODS constructor
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
METHODS zif_abapgit_gui_event_handler~on_event
|
||||
REDEFINITION .
|
||||
|
@ -74,12 +75,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BKG_RUN IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -419,7 +419,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BOVERVIEW IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
|
|
@ -228,23 +228,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
DATA: ls_hotkey_action LIKE LINE OF rt_hotkey_actions.
|
||||
|
||||
ls_hotkey_action-name = |Stage|.
|
||||
ls_hotkey_action-action = c_actions-stage.
|
||||
ls_hotkey_action-hotkey = |s|.
|
||||
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
||||
|
||||
ls_hotkey_action-name = |Re-Run|.
|
||||
ls_hotkey_action-action = c_actions-rerun.
|
||||
ls_hotkey_action-hotkey = |r|.
|
||||
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
|
||||
DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online.
|
||||
|
@ -299,7 +282,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
@ -310,6 +292,23 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page_hotkey~get_hotkey_actions.
|
||||
|
||||
DATA: ls_hotkey_action LIKE LINE OF rt_hotkey_actions.
|
||||
|
||||
ls_hotkey_action-name = |Stage|.
|
||||
ls_hotkey_action-action = c_actions-stage.
|
||||
ls_hotkey_action-hotkey = |s|.
|
||||
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
||||
|
||||
ls_hotkey_action-name = |Re-Run|.
|
||||
ls_hotkey_action-action = c_actions-rerun.
|
||||
ls_hotkey_action-hotkey = |r|.
|
||||
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_renderable~render.
|
||||
|
||||
ms_control-page_menu = build_menu( ).
|
||||
|
|
|
@ -384,7 +384,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_COMMIT IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
|
|
@ -7,7 +7,9 @@ CLASS zcl_abapgit_gui_page_debuginfo DEFINITION
|
|||
PUBLIC SECTION.
|
||||
INTERFACES: zif_abapgit_gui_page_hotkey.
|
||||
|
||||
METHODS constructor .
|
||||
METHODS constructor
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS:
|
||||
render_content REDEFINITION,
|
||||
|
|
|
@ -185,35 +185,8 @@ CLASS zcl_abapgit_gui_page_diff DEFINITION
|
|||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
||||
|
||||
METHOD normalize_filename.
|
||||
|
||||
rv_normalized = replace( val = iv_filename
|
||||
sub = '.'
|
||||
occ = 0
|
||||
with = '_' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD normalize_path.
|
||||
|
||||
rv_normalized = replace( val = iv_path
|
||||
sub = '/'
|
||||
occ = 0
|
||||
with = '_' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_normalized_fname_with_path.
|
||||
|
||||
rv_filename = normalize_path( is_diff-path )
|
||||
&& `_`
|
||||
&& normalize_filename( is_diff-filename ).
|
||||
|
||||
ENDMETHOD.
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD add_filter_sub_menu.
|
||||
|
@ -294,6 +267,19 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_menu_begin.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_menu_end.
|
||||
|
||||
io_menu->add( iv_txt = 'Split/Unified view'
|
||||
iv_act = c_actions-toggle_unified ) ##NO_TEXT.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD append_diff.
|
||||
|
||||
DATA:
|
||||
|
@ -393,6 +379,56 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD calculate_diff.
|
||||
|
||||
DATA: lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
||||
lt_status TYPE zif_abapgit_definitions=>ty_results_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_status> LIKE LINE OF lt_status.
|
||||
|
||||
CLEAR: mt_diff_files.
|
||||
|
||||
lt_remote = mo_repo->get_files_remote( ).
|
||||
lt_local = mo_repo->get_files_local( ).
|
||||
mo_repo->reset_status( ).
|
||||
lt_status = mo_repo->status( ).
|
||||
|
||||
IF is_file IS NOT INITIAL. " Diff for one file
|
||||
|
||||
READ TABLE lt_status ASSIGNING <ls_status>
|
||||
WITH KEY path = is_file-path filename = is_file-filename.
|
||||
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
|
||||
ELSEIF is_object IS NOT INITIAL. " Diff for whole object
|
||||
|
||||
LOOP AT lt_status ASSIGNING <ls_status>
|
||||
WHERE obj_type = is_object-obj_type
|
||||
AND obj_name = is_object-obj_name
|
||||
AND match IS INITIAL.
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
ENDLOOP.
|
||||
|
||||
ELSE. " Diff for the whole repo
|
||||
SORT lt_status BY
|
||||
path ASCENDING
|
||||
filename ASCENDING.
|
||||
LOOP AT lt_status ASSIGNING <ls_status> WHERE match IS INITIAL.
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
DATA: lv_ts TYPE timestamp.
|
||||
|
@ -421,6 +457,20 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_normalized_fname_with_path.
|
||||
|
||||
rv_filename = normalize_path( is_diff-path )
|
||||
&& `_`
|
||||
&& normalize_filename( is_diff-filename ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD insert_nav.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_binary.
|
||||
|
||||
FIELD-SYMBOLS <lv_data> LIKE iv_d1.
|
||||
|
@ -436,6 +486,26 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD normalize_filename.
|
||||
|
||||
rv_normalized = replace( val = iv_filename
|
||||
sub = '.'
|
||||
occ = 0
|
||||
with = '_' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD normalize_path.
|
||||
|
||||
rv_normalized = replace( val = iv_path
|
||||
sub = '/'
|
||||
occ = 0
|
||||
with = '_' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_beacon.
|
||||
|
||||
DATA: lv_beacon TYPE string,
|
||||
|
@ -471,6 +541,13 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_beacon_begin_of_row.
|
||||
|
||||
io_html->add( '<th class="num"></th>' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_content.
|
||||
|
||||
DATA: ls_diff_file LIKE LINE OF mt_diff_files,
|
||||
|
@ -583,6 +660,16 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_diff_head_after_state.
|
||||
|
||||
IF is_diff-fstate = c_fstate-both AND mv_unified = abap_true.
|
||||
io_html->add( '<span class="attention pad-sides">Attention: Unified mode'
|
||||
&& ' highlighting for MM assumes local file is newer ! </span>' ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_lines.
|
||||
|
||||
DATA: lo_highlighter TYPE REF TO zcl_abapgit_syntax_highlighter,
|
||||
|
@ -699,6 +786,19 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_line_split_row.
|
||||
|
||||
IF iv_fstate = c_fstate-remote. " Remote file leading changes
|
||||
io_html->add( iv_old ). " local
|
||||
io_html->add( iv_new ). " remote
|
||||
ELSE. " Local leading changes or both were modified
|
||||
io_html->add( iv_new ). " local
|
||||
io_html->add( iv_old ). " remote
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_line_unified.
|
||||
|
||||
FIELD-SYMBOLS <ls_diff_line> LIKE LINE OF mt_delayed_lines.
|
||||
|
@ -776,6 +876,28 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_table_head_non_unified.
|
||||
|
||||
io_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="mark"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th>LOCAL</th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="mark"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th>REMOTE</th>' ). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_table_head_unified.
|
||||
|
||||
io_html->add( '<th class="num">old</th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="num">new</th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="mark"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th>code</th>' ). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD scripts.
|
||||
|
||||
ro_html = super->scripts( ).
|
||||
|
@ -816,7 +938,6 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
@ -826,125 +947,4 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD calculate_diff.
|
||||
|
||||
DATA: lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
||||
lt_status TYPE zif_abapgit_definitions=>ty_results_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_status> LIKE LINE OF lt_status.
|
||||
|
||||
CLEAR: mt_diff_files.
|
||||
|
||||
lt_remote = mo_repo->get_files_remote( ).
|
||||
lt_local = mo_repo->get_files_local( ).
|
||||
mo_repo->reset_status( ).
|
||||
lt_status = mo_repo->status( ).
|
||||
|
||||
IF is_file IS NOT INITIAL. " Diff for one file
|
||||
|
||||
READ TABLE lt_status ASSIGNING <ls_status>
|
||||
WITH KEY path = is_file-path filename = is_file-filename.
|
||||
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
|
||||
ELSEIF is_object IS NOT INITIAL. " Diff for whole object
|
||||
|
||||
LOOP AT lt_status ASSIGNING <ls_status>
|
||||
WHERE obj_type = is_object-obj_type
|
||||
AND obj_name = is_object-obj_name
|
||||
AND match IS INITIAL.
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
ENDLOOP.
|
||||
|
||||
ELSE. " Diff for the whole repo
|
||||
SORT lt_status BY
|
||||
path ASCENDING
|
||||
filename ASCENDING.
|
||||
LOOP AT lt_status ASSIGNING <ls_status> WHERE match IS INITIAL.
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_menu_end.
|
||||
|
||||
io_menu->add( iv_txt = 'Split/Unified view'
|
||||
iv_act = c_actions-toggle_unified ) ##NO_TEXT.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_menu_begin.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_table_head_non_unified.
|
||||
|
||||
io_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="mark"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th>LOCAL</th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="mark"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th>REMOTE</th>' ). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_beacon_begin_of_row.
|
||||
|
||||
io_html->add( '<th class="num"></th>' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_diff_head_after_state.
|
||||
|
||||
IF is_diff-fstate = c_fstate-both AND mv_unified = abap_true.
|
||||
io_html->add( '<span class="attention pad-sides">Attention: Unified mode'
|
||||
&& ' highlighting for MM assumes local file is newer ! </span>' ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD insert_nav.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_line_split_row.
|
||||
|
||||
IF iv_fstate = c_fstate-remote. " Remote file leading changes
|
||||
io_html->add( iv_old ). " local
|
||||
io_html->add( iv_new ). " remote
|
||||
ELSE. " Local leading changes or both were modified
|
||||
io_html->add( iv_new ). " local
|
||||
io_html->add( iv_old ). " remote
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_table_head_unified.
|
||||
|
||||
io_html->add( '<th class="num">old</th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="num">new</th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th class="mark"></th>' ). "#EC NOTEXT
|
||||
io_html->add( '<th>code</th>' ). "#EC NOTEXT
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -9,11 +9,13 @@ CLASS zcl_abapgit_gui_page_explore DEFINITION
|
|||
CONSTANTS c_explore_url TYPE string
|
||||
VALUE 'https://dotabap.github.io/explore.html'.
|
||||
|
||||
METHODS constructor.
|
||||
METHODS constructor
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
|
|
@ -153,7 +153,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MAIN IMPLEMENTATION.
|
|||
ro_html->add( zcl_abapgit_gui_chunk_lib=>render_news( io_news = lo_news ) ).
|
||||
|
||||
IF mo_repo_content IS BOUND.
|
||||
ro_html->add( mo_repo_content->render( ) ).
|
||||
ro_html->add( mo_repo_content->zif_abapgit_gui_renderable~render( ) ).
|
||||
ENDIF.
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
|
@ -322,7 +322,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MAIN IMPLEMENTATION.
|
|||
mo_repo_content->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
@ -361,7 +360,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MAIN IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
|
|
@ -238,7 +238,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MERGE IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
|
|
@ -176,20 +176,24 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
super->constructor(
|
||||
iv_key = iv_key
|
||||
is_file = is_file
|
||||
is_object = is_object ).
|
||||
METHOD add_menu_begin.
|
||||
|
||||
" While patching we always want to be in split mode
|
||||
CLEAR: mv_unified.
|
||||
CREATE OBJECT mo_stage.
|
||||
io_menu->add(
|
||||
iv_txt = |Refresh local|
|
||||
iv_typ = zif_abapgit_html=>c_action_type-dummy
|
||||
iv_act = c_actions-refresh_local
|
||||
iv_id = c_actions-refresh_local
|
||||
iv_title = |Refresh all local objects, without refreshing the remote| ).
|
||||
|
||||
ms_control-page_menu = build_menu( ).
|
||||
io_menu->add(
|
||||
iv_txt = |Refresh|
|
||||
iv_typ = zif_abapgit_html=>c_action_type-dummy
|
||||
iv_act = c_actions-refresh
|
||||
iv_id = c_actions-refresh
|
||||
iv_title = |Complete refresh of all objects, local and remote| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -205,118 +209,6 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
|
||||
CASE iv_action.
|
||||
WHEN c_actions-stage.
|
||||
|
||||
start_staging( it_postdata ).
|
||||
|
||||
CREATE OBJECT ei_page TYPE zcl_abapgit_gui_page_commit
|
||||
EXPORTING
|
||||
io_repo = mo_repo
|
||||
io_stage = mo_stage.
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX |^{ c_actions-refresh }| IN iv_action.
|
||||
IF sy-subrc = 0.
|
||||
|
||||
apply_patch_from_form_fields( it_postdata ).
|
||||
refresh( iv_action ).
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
|
||||
ELSE.
|
||||
|
||||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
ei_page = ei_page
|
||||
ev_state = ev_state ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD start_staging.
|
||||
|
||||
apply_patch_from_form_fields( it_postdata ).
|
||||
add_to_stage( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD apply_patch_from_form_fields.
|
||||
|
||||
DATA: lv_string TYPE string,
|
||||
lt_fields TYPE tihttpnvp,
|
||||
lv_add TYPE string,
|
||||
lv_remove TYPE string.
|
||||
|
||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
||||
|
||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-add
|
||||
it_field = lt_fields
|
||||
CHANGING cg_field = lv_add ).
|
||||
|
||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-remove
|
||||
it_field = lt_fields
|
||||
CHANGING cg_field = lv_remove ).
|
||||
|
||||
apply_patch_all( iv_patch = lv_add
|
||||
iv_patch_flag = abap_true ).
|
||||
|
||||
apply_patch_all( iv_patch = lv_remove
|
||||
iv_patch_flag = abap_false ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD restore_patch_flags.
|
||||
|
||||
DATA:
|
||||
lt_diff_old TYPE zif_abapgit_definitions=>ty_diffs_tt.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<ls_diff_file> TYPE ty_file_diff,
|
||||
<ls_diff_file_old> TYPE ty_file_diff,
|
||||
<ls_diff_old> TYPE zif_abapgit_definitions=>ty_diff.
|
||||
|
||||
LOOP AT mt_diff_files ASSIGNING <ls_diff_file>.
|
||||
|
||||
READ TABLE it_diff_files_old ASSIGNING <ls_diff_file_old>
|
||||
WITH KEY secondary
|
||||
COMPONENTS path = <ls_diff_file>-path
|
||||
filename = <ls_diff_file>-filename.
|
||||
IF sy-subrc <> 0.
|
||||
CONTINUE. " e.g. new objects
|
||||
ENDIF.
|
||||
|
||||
lt_diff_old = <ls_diff_file_old>-o_diff->get( ).
|
||||
|
||||
LOOP AT lt_diff_old ASSIGNING <ls_diff_old>
|
||||
WHERE patch_flag = abap_true.
|
||||
|
||||
<ls_diff_file>-o_diff->set_patch_by_old_diff(
|
||||
is_diff_old = <ls_diff_old>
|
||||
iv_patch_flag = abap_true ).
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_to_stage.
|
||||
|
||||
DATA: lt_diff TYPE zif_abapgit_definitions=>ty_diffs_tt,
|
||||
|
@ -382,6 +274,225 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD apply_patch_all.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lt_patch TYPE string_table,
|
||||
lv_line_index TYPE string.
|
||||
|
||||
FIELD-SYMBOLS: <lv_patch> TYPE LINE OF string_table.
|
||||
|
||||
SPLIT iv_patch AT ',' INTO TABLE lt_patch.
|
||||
|
||||
LOOP AT lt_patch ASSIGNING <lv_patch>.
|
||||
|
||||
get_patch_data(
|
||||
EXPORTING
|
||||
iv_patch = <lv_patch>
|
||||
IMPORTING
|
||||
ev_filename = lv_filename
|
||||
ev_line_index = lv_line_index ).
|
||||
|
||||
apply_patch_for( iv_filename = lv_filename
|
||||
iv_line_index = lv_line_index
|
||||
iv_patch_flag = iv_patch_flag ).
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD apply_patch_for.
|
||||
|
||||
DATA: lo_diff TYPE REF TO zcl_abapgit_diff,
|
||||
ls_diff_line TYPE zif_abapgit_definitions=>ty_diff,
|
||||
lv_line TYPE i.
|
||||
|
||||
lo_diff = get_diff_object( iv_filename ).
|
||||
|
||||
ls_diff_line = get_diff_line( io_diff = lo_diff
|
||||
iv_line_index = iv_line_index ).
|
||||
|
||||
CASE ls_diff_line-result.
|
||||
WHEN zif_abapgit_definitions=>c_diff-update
|
||||
OR zif_abapgit_definitions=>c_diff-insert.
|
||||
|
||||
lv_line = ls_diff_line-new_num.
|
||||
|
||||
lo_diff->set_patch_new( iv_line_new = lv_line
|
||||
iv_patch_flag = iv_patch_flag ).
|
||||
|
||||
WHEN zif_abapgit_definitions=>c_diff-delete.
|
||||
|
||||
lv_line = ls_diff_line-old_num.
|
||||
|
||||
lo_diff->set_patch_old( iv_line_old = lv_line
|
||||
iv_patch_flag = iv_patch_flag ).
|
||||
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD apply_patch_from_form_fields.
|
||||
|
||||
DATA: lv_string TYPE string,
|
||||
lt_fields TYPE tihttpnvp,
|
||||
lv_add TYPE string,
|
||||
lv_remove TYPE string.
|
||||
|
||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
||||
|
||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-add
|
||||
it_field = lt_fields
|
||||
CHANGING cg_field = lv_add ).
|
||||
|
||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-remove
|
||||
it_field = lt_fields
|
||||
CHANGING cg_field = lv_remove ).
|
||||
|
||||
apply_patch_all( iv_patch = lv_add
|
||||
iv_patch_flag = abap_true ).
|
||||
|
||||
apply_patch_all( iv_patch = lv_remove
|
||||
iv_patch_flag = abap_false ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD are_all_lines_patched.
|
||||
|
||||
DATA: lv_patch_count TYPE i.
|
||||
|
||||
FIELD-SYMBOLS: <ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
||||
|
||||
LOOP AT it_diff ASSIGNING <ls_diff>
|
||||
WHERE patch_flag = abap_true.
|
||||
lv_patch_count = lv_patch_count + 1.
|
||||
ENDLOOP.
|
||||
|
||||
rv_are_all_lines_patched = boolc( lv_patch_count = lines( it_diff ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
super->constructor(
|
||||
iv_key = iv_key
|
||||
is_file = is_file
|
||||
is_object = is_object ).
|
||||
|
||||
" While patching we always want to be in split mode
|
||||
CLEAR: mv_unified.
|
||||
CREATE OBJECT mo_stage.
|
||||
|
||||
ms_control-page_menu = build_menu( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_diff_line.
|
||||
|
||||
DATA: lt_diff TYPE zif_abapgit_definitions=>ty_diffs_tt,
|
||||
lv_line_index TYPE sy-tabix.
|
||||
|
||||
|
||||
lv_line_index = iv_line_index.
|
||||
lt_diff = io_diff->get( ).
|
||||
|
||||
READ TABLE lt_diff INTO rs_diff
|
||||
INDEX lv_line_index.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Invalid line index { lv_line_index }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_diff_object.
|
||||
|
||||
FIELD-SYMBOLS: <ls_diff_file> LIKE LINE OF mt_diff_files.
|
||||
|
||||
LOOP AT mt_diff_files ASSIGNING <ls_diff_file>.
|
||||
IF get_normalized_fname_with_path( <ls_diff_file> ) = iv_filename.
|
||||
ro_diff = <ls_diff_file>-o_diff.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
IF ro_diff IS NOT BOUND.
|
||||
zcx_abapgit_exception=>raise( |Invalid filename { iv_filename }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_patch_data.
|
||||
|
||||
DATA: lv_section TYPE string.
|
||||
|
||||
CLEAR: ev_filename, ev_line_index.
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX `patch_line` && `_(.*)_(\d)+_(\d+)`
|
||||
IN iv_patch
|
||||
SUBMATCHES ev_filename lv_section ev_line_index.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Invalid patch| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD insert_nav.
|
||||
|
||||
" add beacon at beginning of file
|
||||
rv_insert_nav = abap_true.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_every_changed_line_patched.
|
||||
|
||||
DATA: lt_diff TYPE zif_abapgit_definitions=>ty_diffs_tt.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<ls_diff_file> TYPE zcl_abapgit_gui_page_diff=>ty_file_diff,
|
||||
<ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
||||
|
||||
rv_everything_patched = abap_true.
|
||||
|
||||
LOOP AT mt_diff_files ASSIGNING <ls_diff_file>.
|
||||
|
||||
lt_diff = <ls_diff_file>-o_diff->get( ).
|
||||
|
||||
LOOP AT lt_diff ASSIGNING <ls_diff>
|
||||
WHERE result IS NOT INITIAL
|
||||
AND patch_flag = abap_false.
|
||||
rv_everything_patched = abap_false.
|
||||
EXIT.
|
||||
ENDLOOP.
|
||||
IF sy-subrc = 0.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_patch_line_possible.
|
||||
|
||||
IF is_diff_line-result = zif_abapgit_definitions=>c_diff-update
|
||||
OR is_diff_line-result = zif_abapgit_definitions=>c_diff-insert
|
||||
OR is_diff_line-result = zif_abapgit_definitions=>c_diff-delete.
|
||||
rv_is_patch_line_possible = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD refresh.
|
||||
|
||||
DATA:
|
||||
|
@ -438,175 +549,76 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD apply_patch_all.
|
||||
METHOD render_beacon_begin_of_row.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lt_patch TYPE string_table,
|
||||
lv_line_index TYPE string.
|
||||
mv_section_count = mv_section_count + 1.
|
||||
|
||||
FIELD-SYMBOLS: <lv_patch> TYPE LINE OF string_table.
|
||||
|
||||
SPLIT iv_patch AT ',' INTO TABLE lt_patch.
|
||||
|
||||
LOOP AT lt_patch ASSIGNING <lv_patch>.
|
||||
|
||||
get_patch_data(
|
||||
EXPORTING
|
||||
iv_patch = <lv_patch>
|
||||
IMPORTING
|
||||
ev_filename = lv_filename
|
||||
ev_line_index = lv_line_index ).
|
||||
|
||||
apply_patch_for( iv_filename = lv_filename
|
||||
iv_line_index = lv_line_index
|
||||
iv_patch_flag = iv_patch_flag ).
|
||||
|
||||
ENDLOOP.
|
||||
io_html->add( |<th class="patch">| ).
|
||||
io_html->add_checkbox( iv_id = |patch_section_{ get_normalized_fname_with_path( is_diff ) }_{ mv_section_count }| ).
|
||||
io_html->add( '</th>' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD are_all_lines_patched.
|
||||
METHOD render_content.
|
||||
|
||||
DATA: lv_patch_count TYPE i.
|
||||
CLEAR: mv_section_count.
|
||||
|
||||
FIELD-SYMBOLS: <ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
||||
|
||||
LOOP AT it_diff ASSIGNING <ls_diff>
|
||||
WHERE patch_flag = abap_true.
|
||||
lv_patch_count = lv_patch_count + 1.
|
||||
ENDLOOP.
|
||||
|
||||
rv_are_all_lines_patched = boolc( lv_patch_count = lines( it_diff ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_patch_data.
|
||||
|
||||
DATA: lv_section TYPE string.
|
||||
|
||||
CLEAR: ev_filename, ev_line_index.
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX `patch_line` && `_(.*)_(\d)+_(\d+)`
|
||||
IN iv_patch
|
||||
SUBMATCHES ev_filename lv_section ev_line_index.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Invalid patch| ).
|
||||
IF mv_pushed = abap_true.
|
||||
refresh_full( ).
|
||||
calculate_diff( ).
|
||||
CLEAR: mv_pushed.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD apply_patch_for.
|
||||
|
||||
DATA: lo_diff TYPE REF TO zcl_abapgit_diff,
|
||||
ls_diff_line TYPE zif_abapgit_definitions=>ty_diff,
|
||||
lv_line TYPE i.
|
||||
|
||||
lo_diff = get_diff_object( iv_filename ).
|
||||
|
||||
ls_diff_line = get_diff_line( io_diff = lo_diff
|
||||
iv_line_index = iv_line_index ).
|
||||
|
||||
CASE ls_diff_line-result.
|
||||
WHEN zif_abapgit_definitions=>c_diff-update
|
||||
OR zif_abapgit_definitions=>c_diff-insert.
|
||||
|
||||
lv_line = ls_diff_line-new_num.
|
||||
|
||||
lo_diff->set_patch_new( iv_line_new = lv_line
|
||||
iv_patch_flag = iv_patch_flag ).
|
||||
|
||||
WHEN zif_abapgit_definitions=>c_diff-delete.
|
||||
|
||||
lv_line = ls_diff_line-old_num.
|
||||
|
||||
lo_diff->set_patch_old( iv_line_old = lv_line
|
||||
iv_patch_flag = iv_patch_flag ).
|
||||
|
||||
ENDCASE.
|
||||
ro_html = super->render_content( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_diff_object.
|
||||
METHOD render_diff_head_after_state.
|
||||
|
||||
FIELD-SYMBOLS: <ls_diff_file> LIKE LINE OF mt_diff_files.
|
||||
DATA: lv_act_id TYPE string.
|
||||
|
||||
LOOP AT mt_diff_files ASSIGNING <ls_diff_file>.
|
||||
IF get_normalized_fname_with_path( <ls_diff_file> ) = iv_filename.
|
||||
ro_diff = <ls_diff_file>-o_diff.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
IF is_diff-obj_type IS NOT INITIAL AND is_diff-obj_name IS NOT INITIAL.
|
||||
|
||||
lv_act_id = |{ c_actions-refresh_local_object }_{ is_diff-obj_type }_{ is_diff-obj_name }|.
|
||||
|
||||
io_html->add_a(
|
||||
iv_txt = |Refresh|
|
||||
iv_typ = zif_abapgit_html=>c_action_type-dummy
|
||||
iv_act = lv_act_id
|
||||
iv_id = lv_act_id
|
||||
iv_title = |Local refresh of this object| ).
|
||||
|
||||
IF ro_diff IS NOT BOUND.
|
||||
zcx_abapgit_exception=>raise( |Invalid filename { iv_filename }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_diff_line.
|
||||
|
||||
DATA: lt_diff TYPE zif_abapgit_definitions=>ty_diffs_tt,
|
||||
lv_line_index TYPE sy-tabix.
|
||||
|
||||
|
||||
lv_line_index = iv_line_index.
|
||||
lt_diff = io_diff->get( ).
|
||||
|
||||
READ TABLE lt_diff INTO rs_diff
|
||||
INDEX lv_line_index.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Invalid line index { lv_line_index }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_menu_begin.
|
||||
|
||||
io_menu->add(
|
||||
iv_txt = |Refresh local|
|
||||
iv_typ = zif_abapgit_html=>c_action_type-dummy
|
||||
iv_act = c_actions-refresh_local
|
||||
iv_id = c_actions-refresh_local
|
||||
iv_title = |Refresh all local objects, without refreshing the remote| ).
|
||||
|
||||
io_menu->add(
|
||||
iv_txt = |Refresh|
|
||||
iv_typ = zif_abapgit_html=>c_action_type-dummy
|
||||
iv_act = c_actions-refresh
|
||||
iv_id = c_actions-refresh
|
||||
iv_title = |Complete refresh of all objects, local and remote| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD scripts.
|
||||
|
||||
ro_html = super->scripts( ).
|
||||
|
||||
ro_html->add( 'preparePatch();' ).
|
||||
ro_html->add( 'registerStagePatch();' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_table_head_non_unified.
|
||||
|
||||
render_patch_head( io_html = io_html
|
||||
is_diff = is_diff ).
|
||||
|
||||
super->render_table_head_non_unified(
|
||||
super->render_diff_head_after_state(
|
||||
io_html = io_html
|
||||
is_diff = is_diff ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_line_split_row.
|
||||
|
||||
render_patch( io_html = io_html
|
||||
iv_filename = iv_filename
|
||||
is_diff_line = is_diff_line
|
||||
iv_fstate = iv_fstate
|
||||
iv_index = iv_index ).
|
||||
|
||||
super->render_line_split_row(
|
||||
io_html = io_html
|
||||
iv_filename = iv_filename
|
||||
is_diff_line = is_diff_line
|
||||
iv_index = iv_index
|
||||
iv_fstate = iv_fstate
|
||||
iv_new = iv_new
|
||||
iv_old = iv_old ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_patch.
|
||||
|
||||
CONSTANTS:
|
||||
|
@ -654,120 +666,108 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_beacon_begin_of_row.
|
||||
METHOD render_table_head_non_unified.
|
||||
|
||||
mv_section_count = mv_section_count + 1.
|
||||
render_patch_head( io_html = io_html
|
||||
is_diff = is_diff ).
|
||||
|
||||
io_html->add( |<th class="patch">| ).
|
||||
io_html->add_checkbox( iv_id = |patch_section_{ get_normalized_fname_with_path( is_diff ) }_{ mv_section_count }| ).
|
||||
io_html->add( '</th>' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_content.
|
||||
|
||||
CLEAR: mv_section_count.
|
||||
|
||||
IF mv_pushed = abap_true.
|
||||
refresh_full( ).
|
||||
calculate_diff( ).
|
||||
CLEAR: mv_pushed.
|
||||
ENDIF.
|
||||
|
||||
ro_html = super->render_content( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_diff_head_after_state.
|
||||
|
||||
DATA: lv_act_id TYPE string.
|
||||
|
||||
IF is_diff-obj_type IS NOT INITIAL AND is_diff-obj_name IS NOT INITIAL.
|
||||
|
||||
lv_act_id = |{ c_actions-refresh_local_object }_{ is_diff-obj_type }_{ is_diff-obj_name }|.
|
||||
|
||||
io_html->add_a(
|
||||
iv_txt = |Refresh|
|
||||
iv_typ = zif_abapgit_html=>c_action_type-dummy
|
||||
iv_act = lv_act_id
|
||||
iv_id = lv_act_id
|
||||
iv_title = |Local refresh of this object| ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
super->render_diff_head_after_state(
|
||||
super->render_table_head_non_unified(
|
||||
io_html = io_html
|
||||
is_diff = is_diff ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD insert_nav.
|
||||
METHOD restore_patch_flags.
|
||||
|
||||
" add beacon at beginning of file
|
||||
rv_insert_nav = abap_true.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_line_split_row.
|
||||
|
||||
render_patch( io_html = io_html
|
||||
iv_filename = iv_filename
|
||||
is_diff_line = is_diff_line
|
||||
iv_fstate = iv_fstate
|
||||
iv_index = iv_index ).
|
||||
|
||||
super->render_line_split_row(
|
||||
io_html = io_html
|
||||
iv_filename = iv_filename
|
||||
is_diff_line = is_diff_line
|
||||
iv_index = iv_index
|
||||
iv_fstate = iv_fstate
|
||||
iv_new = iv_new
|
||||
iv_old = iv_old ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_every_changed_line_patched.
|
||||
|
||||
DATA: lt_diff TYPE zif_abapgit_definitions=>ty_diffs_tt.
|
||||
DATA:
|
||||
lt_diff_old TYPE zif_abapgit_definitions=>ty_diffs_tt.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<ls_diff_file> TYPE zcl_abapgit_gui_page_diff=>ty_file_diff,
|
||||
<ls_diff> TYPE zif_abapgit_definitions=>ty_diff.
|
||||
|
||||
rv_everything_patched = abap_true.
|
||||
<ls_diff_file> TYPE ty_file_diff,
|
||||
<ls_diff_file_old> TYPE ty_file_diff,
|
||||
<ls_diff_old> TYPE zif_abapgit_definitions=>ty_diff.
|
||||
|
||||
LOOP AT mt_diff_files ASSIGNING <ls_diff_file>.
|
||||
|
||||
lt_diff = <ls_diff_file>-o_diff->get( ).
|
||||
|
||||
LOOP AT lt_diff ASSIGNING <ls_diff>
|
||||
WHERE result IS NOT INITIAL
|
||||
AND patch_flag = abap_false.
|
||||
rv_everything_patched = abap_false.
|
||||
EXIT.
|
||||
ENDLOOP.
|
||||
IF sy-subrc = 0.
|
||||
EXIT.
|
||||
READ TABLE it_diff_files_old ASSIGNING <ls_diff_file_old>
|
||||
WITH KEY secondary
|
||||
COMPONENTS path = <ls_diff_file>-path
|
||||
filename = <ls_diff_file>-filename.
|
||||
IF sy-subrc <> 0.
|
||||
CONTINUE. " e.g. new objects
|
||||
ENDIF.
|
||||
|
||||
lt_diff_old = <ls_diff_file_old>-o_diff->get( ).
|
||||
|
||||
LOOP AT lt_diff_old ASSIGNING <ls_diff_old>
|
||||
WHERE patch_flag = abap_true.
|
||||
|
||||
<ls_diff_file>-o_diff->set_patch_by_old_diff(
|
||||
is_diff_old = <ls_diff_old>
|
||||
iv_patch_flag = abap_true ).
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_patch_line_possible.
|
||||
METHOD scripts.
|
||||
|
||||
IF is_diff_line-result = zif_abapgit_definitions=>c_diff-update
|
||||
OR is_diff_line-result = zif_abapgit_definitions=>c_diff-insert
|
||||
OR is_diff_line-result = zif_abapgit_definitions=>c_diff-delete.
|
||||
rv_is_patch_line_possible = abap_true.
|
||||
ENDIF.
|
||||
ro_html = super->scripts( ).
|
||||
|
||||
ro_html->add( 'preparePatch();' ).
|
||||
ro_html->add( 'registerStagePatch();' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD start_staging.
|
||||
|
||||
apply_patch_from_form_fields( it_postdata ).
|
||||
add_to_stage( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
|
||||
CASE iv_action.
|
||||
WHEN c_actions-stage.
|
||||
|
||||
start_staging( it_postdata ).
|
||||
|
||||
CREATE OBJECT ei_page TYPE zcl_abapgit_gui_page_commit
|
||||
EXPORTING
|
||||
io_repo = mo_repo
|
||||
io_stage = mo_stage.
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX |^{ c_actions-refresh }| IN iv_action.
|
||||
IF sy-subrc = 0.
|
||||
|
||||
apply_patch_from_form_fields( it_postdata ).
|
||||
refresh( iv_action ).
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
|
||||
ELSE.
|
||||
|
||||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
ei_page = ei_page
|
||||
ev_state = ev_state ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -787,5 +787,4 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
|
|||
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -155,6 +155,8 @@ CLASS ltcl_is_patch_line_possible IMPLEMENTATION.
|
|||
CONSTANTS:
|
||||
lc_dummy_key TYPE zif_abapgit_persistence=>ty_value VALUE '000000000001'.
|
||||
|
||||
zcl_abapgit_ui_injector=>set_gui_services( zcl_abapgit_ui_injector=>get_dummy_gui_services( ) ).
|
||||
|
||||
CREATE OBJECT mo_cut
|
||||
EXPORTING
|
||||
iv_key = lc_dummy_key.
|
||||
|
|
|
@ -5,7 +5,8 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
|
|||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS constructor .
|
||||
METHODS constructor
|
||||
RAISING zcx_abapgit_exception.
|
||||
METHODS zif_abapgit_gui_event_handler~on_event
|
||||
REDEFINITION .
|
||||
|
||||
|
@ -439,7 +440,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
|
|
@ -10,7 +10,8 @@ CLASS zcl_abapgit_gui_page_repo_sett DEFINITION
|
|||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo .
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
METHODS zif_abapgit_gui_event_handler~on_event
|
||||
REDEFINITION .
|
||||
|
|
|
@ -12,7 +12,8 @@ CLASS zcl_abapgit_gui_page_settings DEFINITION
|
|||
change_proxy_bypass TYPE string VALUE 'change_proxy_bypass',
|
||||
END OF c_action.
|
||||
|
||||
METHODS constructor.
|
||||
METHODS constructor
|
||||
RAISING zcx_abapgit_exception.
|
||||
METHODS zif_abapgit_gui_event_handler~on_event REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
@ -113,7 +114,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_page_settings IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
|
|
@ -90,7 +90,6 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION
|
|||
VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar .
|
||||
METHODS get_page_patch
|
||||
IMPORTING iv_getdata TYPE clike
|
||||
iv_prev_page TYPE clike
|
||||
RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
|
||||
RAISING zcx_abapgit_exception.
|
||||
METHODS render_master_language_warning
|
||||
|
@ -103,7 +102,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD build_menu.
|
||||
|
@ -667,16 +666,13 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
|
|||
|
||||
WHEN zif_abapgit_definitions=>c_action-go_patch. " Go Patch page
|
||||
|
||||
ei_page = get_page_patch(
|
||||
iv_getdata = iv_getdata
|
||||
iv_prev_page = iv_prev_page ).
|
||||
ei_page = get_page_patch( iv_getdata ).
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||
|
||||
WHEN OTHERS.
|
||||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
|
|
@ -43,15 +43,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'SYNTAX CHECK'.
|
||||
mo_repo = io_repo.
|
||||
run_syntax_check( ).
|
||||
ENDMETHOD.
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_SYNTAX IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD build_menu.
|
||||
|
@ -65,6 +57,14 @@ CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
ms_control-page_title = 'SYNTAX CHECK'.
|
||||
mo_repo = io_repo.
|
||||
run_syntax_check( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_content.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
@ -108,7 +108,6 @@ CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
|
|||
super->zif_abapgit_gui_event_handler~on_event(
|
||||
EXPORTING
|
||||
iv_action = iv_action
|
||||
iv_prev_page = iv_prev_page
|
||||
iv_getdata = iv_getdata
|
||||
it_postdata = it_postdata
|
||||
IMPORTING
|
||||
|
@ -123,11 +122,11 @@ CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_renderable~render.
|
||||
|
||||
ms_control-page_menu = build_menu( ).
|
||||
ri_html = super->zif_abapgit_gui_renderable~render( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -91,7 +91,6 @@ CLASS zcl_abapgit_gui_router DEFINITION
|
|||
METHODS get_page_diff
|
||||
IMPORTING
|
||||
!iv_getdata TYPE clike
|
||||
!iv_prev_page TYPE clike
|
||||
RETURNING
|
||||
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
|
||||
RAISING
|
||||
|
@ -131,7 +130,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD abapgit_services_actions.
|
||||
|
@ -231,9 +230,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
|||
ei_page = get_page_background( lv_key ).
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||
WHEN zif_abapgit_definitions=>c_action-go_diff. " Go Diff page
|
||||
ei_page = get_page_diff(
|
||||
iv_getdata = is_event_data-getdata
|
||||
iv_prev_page = is_event_data-prev_page ).
|
||||
ei_page = get_page_diff( is_event_data-getdata ).
|
||||
ev_state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
|
||||
WHEN zif_abapgit_definitions=>c_action-go_stage. " Go Staging page
|
||||
ei_page = get_page_stage( is_event_data-getdata ).
|
||||
|
@ -577,7 +574,6 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
|||
DATA: ls_event_data TYPE ty_event_data.
|
||||
|
||||
ls_event_data-action = iv_action.
|
||||
ls_event_data-prev_page = iv_prev_page.
|
||||
ls_event_data-getdata = iv_getdata.
|
||||
ls_event_data-postdata = it_postdata.
|
||||
|
||||
|
@ -689,5 +685,4 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
CLASS zcl_abapgit_gui_view_repo DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
INHERITING FROM zcl_abapgit_gui_component
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
@ -9,9 +10,6 @@ CLASS zcl_abapgit_gui_view_repo DEFINITION
|
|||
INTERFACES zif_abapgit_gui_event_handler .
|
||||
INTERFACES zif_abapgit_gui_page_hotkey.
|
||||
|
||||
ALIASES render
|
||||
FOR zif_abapgit_gui_renderable~render .
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF c_actions,
|
||||
change_dir TYPE string VALUE 'change_dir' ##NO_TEXT,
|
||||
|
@ -484,6 +482,8 @@ CLASS ZCL_ABAPGIT_GUI_VIEW_REPO IMPLEMENTATION.
|
|||
DATA: lo_settings TYPE REF TO zcl_abapgit_settings,
|
||||
lv_package TYPE devclass.
|
||||
|
||||
super->constructor( ).
|
||||
|
||||
mv_key = iv_key.
|
||||
mo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
|
||||
mv_cur_dir = '/'. " Root
|
||||
|
@ -928,6 +928,8 @@ CLASS ZCL_ABAPGIT_GUI_VIEW_REPO IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <ls_item> LIKE LINE OF lt_repo_items.
|
||||
|
||||
mi_gui_services->register_event_handler( me ).
|
||||
|
||||
" Reinit, for the case of type change
|
||||
mo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( mo_repo->get_key( ) ).
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
CLASS zcl_abapgit_gui_view_tutorial DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
INHERITING FROM zcl_abapgit_gui_component
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
|
|
@ -19,6 +19,11 @@ CLASS zcl_abapgit_ui_factory DEFINITION
|
|||
VALUE(ro_gui) TYPE REF TO zcl_abapgit_gui
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS get_gui_services
|
||||
RETURNING
|
||||
VALUE(ri_gui_services) TYPE REF TO zif_abapgit_gui_services
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS get_frontend_services
|
||||
RETURNING
|
||||
VALUE(ri_fe_serv) TYPE REF TO zif_abapgit_frontend_services .
|
||||
|
@ -29,6 +34,7 @@ CLASS zcl_abapgit_ui_factory DEFINITION
|
|||
CLASS-DATA gi_gui_functions TYPE REF TO zif_abapgit_gui_functions .
|
||||
CLASS-DATA go_gui TYPE REF TO zcl_abapgit_gui .
|
||||
CLASS-DATA gi_fe_services TYPE REF TO zif_abapgit_frontend_services .
|
||||
CLASS-DATA gi_gui_services TYPE REF TO zif_abapgit_gui_services.
|
||||
|
||||
CLASS-METHODS init_asset_manager
|
||||
RETURNING
|
||||
|
@ -93,6 +99,14 @@ CLASS ZCL_ABAPGIT_UI_FACTORY IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_gui_services.
|
||||
IF gi_gui_services IS NOT BOUND.
|
||||
gi_gui_services ?= get_gui( ).
|
||||
ENDIF.
|
||||
ri_gui_services = gi_gui_services.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_popups.
|
||||
|
||||
IF gi_popups IS INITIAL.
|
||||
|
|
|
@ -14,8 +14,18 @@ CLASS zcl_abapgit_ui_injector DEFINITION
|
|||
|
||||
set_gui_functions
|
||||
IMPORTING
|
||||
ii_gui_functions TYPE REF TO zif_abapgit_gui_functions.
|
||||
ii_gui_functions TYPE REF TO zif_abapgit_gui_functions,
|
||||
|
||||
set_gui_services
|
||||
IMPORTING
|
||||
ii_gui_services TYPE REF TO zif_abapgit_gui_services,
|
||||
|
||||
get_dummy_gui_services
|
||||
RETURNING
|
||||
VALUE(ri_gui_services) TYPE REF TO zif_abapgit_gui_services.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -23,6 +33,13 @@ ENDCLASS.
|
|||
CLASS ZCL_ABAPGIT_UI_INJECTOR IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_dummy_gui_services.
|
||||
|
||||
ri_gui_services = lcl_gui_services_dummy=>create( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_gui_functions.
|
||||
|
||||
zcl_abapgit_ui_factory=>gi_gui_functions = ii_gui_functions.
|
||||
|
@ -30,6 +47,13 @@ CLASS ZCL_ABAPGIT_UI_INJECTOR IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_gui_services.
|
||||
|
||||
zcl_abapgit_ui_factory=>gi_gui_services = ii_gui_services.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_popups.
|
||||
|
||||
zcl_abapgit_ui_factory=>gi_popups = ii_popups.
|
||||
|
|
19
src/ui/zcl_abapgit_ui_injector.clas.locals_imp.abap
Normal file
19
src/ui/zcl_abapgit_ui_injector.clas.locals_imp.abap
Normal file
|
@ -0,0 +1,19 @@
|
|||
CLASS lcl_gui_services_dummy DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES zif_abapgit_gui_services.
|
||||
CLASS-METHODS create
|
||||
RETURNING
|
||||
VALUE(ro_instance) TYPE REF TO lcl_gui_services_dummy.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui_services_dummy IMPLEMENTATION.
|
||||
METHOD create.
|
||||
CREATE OBJECT ro_instance.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_gui_services~cache_asset.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_gui_services~register_event_handler.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_gui_services~get_current_page_name.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
Loading…
Reference in New Issue
Block a user