From f1bf013adf5cf4f925225d22d2276dd77ceba07b Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Wed, 16 Dec 2020 02:23:00 -0500 Subject: [PATCH] Refactor: GUI router state transfer (#4336) Moving page-dependent state changes to separate methods for clarity --- src/ui/zcl_abapgit_gui_router.clas.abap | 82 +++++++++++++++++-------- 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/src/ui/zcl_abapgit_gui_router.clas.abap b/src/ui/zcl_abapgit_gui_router.clas.abap index 2e719cfef..9269cd277 100644 --- a/src/ui/zcl_abapgit_gui_router.clas.abap +++ b/src/ui/zcl_abapgit_gui_router.clas.abap @@ -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.