Refactor Diff and Patch Pages (#6585)

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Marc Bernard 2023-10-30 09:48:47 -04:00 committed by GitHub
parent e7371c8f09
commit f99d0a7e14
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1572 additions and 1473 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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_PAGE_DIFF_BASE</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - GUI Diff</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,43 +1,55 @@
CLASS zcl_abapgit_gui_page_patch DEFINITION CLASS zcl_abapgit_gui_page_patch DEFINITION
PUBLIC PUBLIC
INHERITING FROM zcl_abapgit_gui_page_diff INHERITING FROM zcl_abapgit_gui_page_diff_base
CREATE PUBLIC . CREATE PUBLIC.
PUBLIC SECTION. PUBLIC SECTION.
METHODS:
constructor
IMPORTING
iv_key TYPE zif_abapgit_persistence=>ty_repo-key
is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL
is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL
it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL
RAISING
zcx_abapgit_exception,
zif_abapgit_gui_event_handler~on_event REDEFINITION, CLASS-METHODS create
zif_abapgit_gui_hotkeys~get_hotkey_actions REDEFINITION.
CLASS-METHODS:
get_patch_data
IMPORTING IMPORTING
iv_patch TYPE string !iv_key TYPE zif_abapgit_persistence=>ty_repo-key
EXPORTING !is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL
ev_filename TYPE string !is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL
ev_line_index TYPE string !it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL
RETURNING
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
PROTECTED SECTION.
METHODS constructor
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
!is_file TYPE zif_abapgit_git_definitions=>ty_file OPTIONAL
!is_object TYPE zif_abapgit_definitions=>ty_item OPTIONAL
!it_files TYPE zif_abapgit_definitions=>ty_stage_tt OPTIONAL
RAISING
zcx_abapgit_exception.
CLASS-METHODS get_patch_data
IMPORTING
!iv_patch TYPE string
EXPORTING
!ev_filename TYPE string
!ev_line_index TYPE string
RAISING
zcx_abapgit_exception.
METHODS:
zif_abapgit_gui_event_handler~on_event REDEFINITION,
zif_abapgit_gui_hotkeys~get_hotkey_actions REDEFINITION,
zif_abapgit_gui_renderable~render REDEFINITION.
PROTECTED SECTION.
METHODS: METHODS:
render_content REDEFINITION,
add_menu_begin REDEFINITION, add_menu_begin REDEFINITION,
add_menu_end REDEFINITION, add_menu_end REDEFINITION,
render_table_head_non_unified REDEFINITION, insert_nav REDEFINITION,
refresh REDEFINITION,
render_beacon_begin_of_row REDEFINITION, render_beacon_begin_of_row REDEFINITION,
render_diff_head_after_state REDEFINITION, render_diff_head_after_state REDEFINITION,
insert_nav REDEFINITION,
render_line_split_row REDEFINITION, render_line_split_row REDEFINITION,
refresh REDEFINITION. render_table_head_non_unified REDEFINITION.
PRIVATE SECTION. PRIVATE SECTION.
@ -134,7 +146,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION. CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
METHOD add_menu_begin. METHOD add_menu_begin.
@ -343,11 +355,27 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
" While patching we always want to be in split mode " While patching we always want to be in split mode
CLEAR: mv_unified. CLEAR: mv_unified.
set_layout( ).
CREATE OBJECT mo_stage. CREATE OBJECT mo_stage.
ms_control-page_title = 'Patch'. ENDMETHOD.
ms_control-page_menu = build_menu( ).
METHOD create.
DATA lo_component TYPE REF TO zcl_abapgit_gui_page_patch.
CREATE OBJECT lo_component
EXPORTING
iv_key = iv_key
is_file = is_file
is_object = is_object
it_files = it_files.
ri_page = zcl_abapgit_gui_page_hoc=>create(
iv_page_title = 'Patch'
iv_page_layout = zcl_abapgit_gui_page=>c_page_layout-full_width
ii_page_menu_provider = lo_component
ii_child_component = lo_component ).
ENDMETHOD. ENDMETHOD.
@ -447,25 +475,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD render_content.
CLEAR: mv_section_count.
IF mv_pushed = abap_true.
refresh_full( ).
calculate_diff( ).
CLEAR: mv_pushed.
ENDIF.
register_handlers( ).
ri_html = super->render_content( ).
register_deferred_script( render_scripts( ) ).
ENDMETHOD.
METHOD render_diff_head_after_state. METHOD render_diff_head_after_state.
DATA: lv_act_id TYPE string. DATA: lv_act_id TYPE string.
@ -657,7 +666,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
METHOD zif_abapgit_gui_hotkeys~get_hotkey_actions. METHOD zif_abapgit_gui_hotkeys~get_hotkey_actions.
DATA: ls_hotkey_action LIKE LINE OF rt_hotkey_actions. DATA ls_hotkey_action LIKE LINE OF rt_hotkey_actions.
ls_hotkey_action-ui_component = 'Patch'. ls_hotkey_action-ui_component = 'Patch'.
@ -677,4 +686,23 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions. INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_gui_renderable~render.
CLEAR mv_section_count.
IF mv_pushed = abap_true.
refresh_full( ).
calculate_diff( ).
CLEAR mv_pushed.
ENDIF.
register_handlers( ).
ri_html = super->zif_abapgit_gui_renderable~render( ).
register_deferred_script( render_scripts( ) ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -921,13 +921,6 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
save_settings( ). save_settings( ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render. rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
WHEN zif_abapgit_definitions=>c_action-go_patch.
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_patch
EXPORTING
iv_key = lv_key.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
ENDCASE. ENDCASE.
ENDMETHOD. ENDMETHOD.

View File

@ -1109,12 +1109,6 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
open_in_main_language( ). open_in_main_language( ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render. rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
WHEN zif_abapgit_definitions=>c_action-go_patch.
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_patch
EXPORTING
iv_key = lv_key.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
ENDCASE. ENDCASE.
ENDMETHOD. ENDMETHOD.

View File

@ -343,8 +343,7 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
METHOD get_page_patch. METHOD get_page_patch.
DATA: lo_page TYPE REF TO zcl_abapgit_gui_page_patch, DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
lt_files TYPE zif_abapgit_definitions=>ty_stage_tt. lt_files TYPE zif_abapgit_definitions=>ty_stage_tt.
lv_key = mo_repo->get_key( ). lv_key = mo_repo->get_key( ).
@ -353,12 +352,9 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
DELETE lt_files WHERE method <> zif_abapgit_definitions=>c_method-add DELETE lt_files WHERE method <> zif_abapgit_definitions=>c_method-add
AND method <> zif_abapgit_definitions=>c_method-rm. AND method <> zif_abapgit_definitions=>c_method-rm.
CREATE OBJECT lo_page ri_page = zcl_abapgit_gui_page_patch=>create(
EXPORTING
iv_key = lv_key iv_key = lv_key
it_files = lt_files. it_files = lt_files ).
ri_page = lo_page.
ENDMETHOD. ENDMETHOD.

View File

@ -79,6 +79,13 @@ CLASS zcl_abapgit_gui_router DEFINITION
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS get_page_patch
IMPORTING
!ii_event TYPE REF TO zif_abapgit_gui_event
RETURNING
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
RAISING
zcx_abapgit_exception .
METHODS get_page_stage METHODS get_page_stage
IMPORTING IMPORTING
!ii_event TYPE REF TO zif_abapgit_gui_event !ii_event TYPE REF TO zif_abapgit_gui_event
@ -238,6 +245,9 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
OR zif_abapgit_definitions=>c_action-go_file_diff. OR zif_abapgit_definitions=>c_action-go_file_diff.
rs_handled-page = get_page_diff( ii_event ). rs_handled-page = get_page_diff( ii_event ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark. rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
WHEN zif_abapgit_definitions=>c_action-go_patch. " Go Patch page
rs_handled-page = get_page_patch( ii_event ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
WHEN zif_abapgit_definitions=>c_action-go_stage. " Go Staging page WHEN zif_abapgit_definitions=>c_action-go_stage. " Go Staging page
rs_handled-page = get_page_stage( ii_event ). rs_handled-page = get_page_stage( ii_event ).
rs_handled-state = get_state_diff( ii_event ). rs_handled-state = get_state_diff( ii_event ).
@ -286,7 +296,6 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
DATA: ls_file TYPE zif_abapgit_git_definitions=>ty_file, DATA: ls_file TYPE zif_abapgit_git_definitions=>ty_file,
ls_object TYPE zif_abapgit_definitions=>ty_item, ls_object TYPE zif_abapgit_definitions=>ty_item,
lo_page TYPE REF TO zcl_abapgit_gui_page_diff,
lv_key TYPE zif_abapgit_persistence=>ty_repo-key. lv_key TYPE zif_abapgit_persistence=>ty_repo-key.
lv_key = ii_event->query( )->get( 'KEY' ). lv_key = ii_event->query( )->get( 'KEY' ).
@ -295,13 +304,30 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
ls_object-obj_type = ii_event->query( )->get( 'OBJ_TYPE' ). ls_object-obj_type = ii_event->query( )->get( 'OBJ_TYPE' ).
ls_object-obj_name = ii_event->query( )->get( 'OBJ_NAME' ). " unescape ? ls_object-obj_name = ii_event->query( )->get( 'OBJ_NAME' ). " unescape ?
CREATE OBJECT lo_page ri_page = zcl_abapgit_gui_page_diff=>create(
EXPORTING
iv_key = lv_key iv_key = lv_key
is_file = ls_file is_file = ls_file
is_object = ls_object. is_object = ls_object ).
ri_page = lo_page. ENDMETHOD.
METHOD get_page_patch.
DATA: ls_file TYPE zif_abapgit_git_definitions=>ty_file,
ls_object TYPE zif_abapgit_definitions=>ty_item,
lv_key TYPE zif_abapgit_persistence=>ty_repo-key.
lv_key = ii_event->query( )->get( 'KEY' ).
ls_file-path = ii_event->query( )->get( 'PATH' ).
ls_file-filename = ii_event->query( )->get( 'FILENAME' ). " unescape ?
ls_object-obj_type = ii_event->query( )->get( 'OBJ_TYPE' ).
ls_object-obj_name = ii_event->query( )->get( 'OBJ_NAME' ). " unescape ?
ri_page = zcl_abapgit_gui_page_patch=>create(
iv_key = lv_key
is_file = ls_file
is_object = ls_object ).
ENDMETHOD. ENDMETHOD.