Refactor: GUI router state transfer (#4336)

Moving page-dependent state changes to separate methods for clarity
This commit is contained in:
Marc Bernard 2020-12-16 02:23:00 -05:00 committed by GitHub
parent 643db383b0
commit f1bf013adf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -122,12 +122,26 @@ CLASS zcl_abapgit_gui_router DEFINITION
!iv_url TYPE csequence
RAISING
zcx_abapgit_exception.
METHODS get_state_settings
IMPORTING
!ii_event TYPE REF TO zif_abapgit_gui_event
RETURNING
VALUE(rv_state) TYPE i.
METHODS get_state_diff
IMPORTING
!ii_event TYPE REF TO zif_abapgit_gui_event
RETURNING
VALUE(rv_state) TYPE i.
METHODS get_state_db_edit
IMPORTING
!ii_event TYPE REF TO zif_abapgit_gui_event
RETURNING
VALUE(rv_state) TYPE i.
ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
CLASS zcl_abapgit_gui_router IMPLEMENTATION.
METHOD abapgit_services_actions.
@ -181,10 +195,7 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_db_edit
EXPORTING
is_key = ls_db_key.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
IF ii_event->mv_current_page_name = 'ZCL_ABAPGIT_GUI_PAGE_DB_DIS'.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_replacing.
ENDIF.
rs_handled-state = get_state_db_edit( ii_event ).
WHEN zif_abapgit_definitions=>c_action-db_display.
lo_query->to_abap( CHANGING cs_container = ls_db_key ).
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_db_dis
@ -256,20 +267,10 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
WHEN zif_abapgit_definitions=>c_action-go_settings. " Go global settings
rs_handled-page = zcl_abapgit_gui_page_sett_glob=>create( ).
IF ii_event->mv_current_page_name CP 'ZCL_ABAPGIT_GUI_PAGE_SETT_*'.
" Keep bookmark while jumping between setting pages
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
ELSE.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
ENDIF.
rs_handled-state = get_state_settings( ii_event ).
WHEN zif_abapgit_definitions=>c_action-go_settings_personal. " Go personal settings
rs_handled-page = zcl_abapgit_gui_page_sett_pers=>create( ).
IF ii_event->mv_current_page_name CP 'ZCL_ABAPGIT_GUI_PAGE_SETT_*'.
" Keep bookmark while jumping between setting pages
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
ELSE.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
ENDIF.
rs_handled-state = get_state_settings( ii_event ).
WHEN zif_abapgit_definitions=>c_action-go_background_run. " Go background run page
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_bkg_run.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
@ -281,11 +282,7 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
WHEN zif_abapgit_definitions=>c_action-go_stage. " Go Staging page
rs_handled-page = get_page_stage( ii_event ).
IF ii_event->mv_current_page_name = 'ZCL_ABAPGIT_GUI_PAGE_DIFF'.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
ELSE.
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
ENDIF.
rs_handled-state = get_state_diff( ii_event ).
WHEN zif_abapgit_definitions=>c_action-go_branch_overview. " Go repo branch overview
rs_handled-page = get_page_branch_overview( lv_key ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
@ -394,6 +391,42 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
ENDMETHOD.
METHOD get_state_db_edit.
" In display mode, replace the page
IF ii_event->mv_current_page_name = 'ZCL_ABAPGIT_GUI_PAGE_DB_DIS'.
rv_state = zcl_abapgit_gui=>c_event_state-new_page_replacing.
ELSE.
rv_state = zcl_abapgit_gui=>c_event_state-new_page.
ENDIF.
ENDMETHOD.
METHOD get_state_diff.
" Bookmark current page before jumping to diff page
IF ii_event->mv_current_page_name CP 'ZCL_ABAPGIT_GUI_PAGE_DIFF'.
rv_state = zcl_abapgit_gui=>c_event_state-new_page.
ELSE.
rv_state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
ENDIF.
ENDMETHOD.
METHOD get_state_settings.
" Bookmark current page before jumping to any settings page
IF ii_event->mv_current_page_name CP 'ZCL_ABAPGIT_GUI_PAGE_SETT_*'.
rv_state = zcl_abapgit_gui=>c_event_state-new_page.
ELSE.
rv_state = zcl_abapgit_gui=>c_event_state-new_page_w_bookmark.
ENDIF.
ENDMETHOD.
METHOD git_services.
DATA lv_key TYPE zif_abapgit_persistence=>ty_repo-key.
@ -581,6 +614,7 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_repo_sett
EXPORTING
io_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
WHEN zif_abapgit_definitions=>c_action-repo_log. " Repo log
li_log = lo_repo->get_log( ).
@ -677,7 +711,6 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
lv_path TYPE string,
lv_xstr TYPE xstring.
" TODO refactor
CONSTANTS:
BEGIN OF lc_page,
main_view TYPE string VALUE 'ZCL_ABAPGIT_GUI_PAGE_MAIN',
@ -697,7 +730,6 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
lo_repo->set_files_remote( zcl_abapgit_zip=>load( lv_xstr ) ).
zcl_abapgit_services_repo=>refresh( lv_key ).
" TODO refactor how current page name is determined
CASE ii_event->mv_current_page_name.
WHEN lc_page-repo_view.
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.