From 69e8410dbb5682548022e496b1bbe157fd54ba09 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 24 Jun 2016 05:09:25 +0000 Subject: [PATCH] refactor popup, before #265 --- zabapgit.prog.abap | 120 +++++++++++++++++++++++++++++++-------------- 1 file changed, 84 insertions(+), 36 deletions(-) diff --git a/zabapgit.prog.abap b/zabapgit.prog.abap index 9666a8532..a8f365d97 100644 --- a/zabapgit.prog.abap +++ b/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.11.15'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.11.16'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -16783,11 +16783,25 @@ CLASS lcl_gui_router DEFINITION FINAL. PRIVATE SECTION. + TYPES: BEGIN OF ty_popup, + url TYPE string, + package TYPE devclass, + branch_name TYPE string, + cancel TYPE abap_bool, + END OF ty_popup. + METHODS get_page_by_name IMPORTING iv_name TYPE clike RETURNING VALUE(ri_page) TYPE REF TO lif_gui_page RAISING lcx_exception. + METHODS repo_popup + IMPORTING iv_url TYPE string + iv_package TYPE devclass OPTIONAL + iv_branch TYPE string DEFAULT 'refs/heads/master' + RETURNING VALUE(rs_popup) TYPE ty_popup + RAISING lcx_exception. + METHODS get_page_diff IMPORTING iv_getdata TYPE clike RETURNING VALUE(ri_page) TYPE REF TO lif_gui_page @@ -16834,7 +16848,7 @@ CLASS lcl_gui_router DEFINITION FINAL. IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception. - METHODS change_branch + METHODS switch_branch IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception. @@ -21183,8 +21197,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION. iv_act = |remove?{ lv_key }| ). lo_sub->add( iv_txt = 'Uninstall' iv_act = |uninstall?{ lv_key }| ). - lo_sub->add( iv_txt = 'Change branch' - iv_act = |change_branch?{ lv_key }| ). + lo_sub->add( iv_txt = 'Switch branch' + iv_act = |switch_branch?{ lv_key }| ). lo_sub->add( iv_txt = 'Reset' iv_act = |reset?{ lv_key }| ). lo_sub->add( iv_txt = 'Create branch' @@ -24227,9 +24241,9 @@ CLASS lcl_gui_router IMPLEMENTATION. lv_key = iv_getdata. ei_page = get_page_stage( lv_key ). ev_state = gc_event_state-new_page_w_bookmark. - WHEN 'change_branch'. + WHEN 'switch_branch'. lv_key = iv_getdata. - change_branch( lv_key ). + switch_branch( lv_key ). ev_state = gc_event_state-re_render. WHEN 'reset'. lv_key = iv_getdata. @@ -24402,40 +24416,45 @@ CLASS lcl_gui_router IMPLEMENTATION. ENDMETHOD. "abapgit_installation - METHOD repo_clone. + METHOD repo_popup. - DATA: lv_returncode TYPE c, - lv_url TYPE string, - lv_package TYPE devclass, - lv_branch_name TYPE string, - lv_icon_ok TYPE icon-name, - lv_icon_br TYPE icon-name, - lv_icon_msg TYPE icon-name, - lo_repo TYPE REF TO lcl_repo_online, - lt_fields TYPE TABLE OF sval. + DATA: lv_returncode TYPE c, + lv_icon_ok TYPE icon-name, + lv_icon_br TYPE icon-name, + lt_fields TYPE TABLE OF sval, + lv_pattr TYPE spo_fattr, + lv_button2 TYPE svalbutton-buttontext, + lv_icon2 TYPE icon-name. FIELD-SYMBOLS: LIKE LINE OF lt_fields. - " TAB FLD LABEL DEF ATTR - _add_dialog_fld 'ABAPTXT255' 'LINE' 'Git Clone Url' iv_url ''. - _add_dialog_fld 'TDEVC' 'DEVCLASS' 'Target Package' '' ''. - _add_dialog_fld 'TEXTL' 'LINE' 'Branch' 'refs/heads/master' '05'. + + IF NOT iv_package IS INITIAL. + lv_pattr = '05'. + ELSE. + lv_button2 = 'Create package'. + lv_icon2 = icon_msg. + ENDIF. + +* TAB FLD LABEL DEF ATTR + _add_dialog_fld 'ABAPTXT255' 'LINE' 'Git Clone Url' iv_url ''. + _add_dialog_fld 'TDEVC' 'DEVCLASS' 'Target Package' iv_package lv_pattr. + _add_dialog_fld 'TEXTL' 'LINE' 'Branch' iv_branch '05'. lv_icon_ok = icon_okay. lv_icon_br = icon_workflow_fork. - lv_icon_msg = icon_msg. CALL FUNCTION 'POPUP_GET_VALUES_USER_BUTTONS' EXPORTING - popup_title = 'Clone' + popup_title = 'Repository' programname = sy-repid formname = 'BRANCH_POPUP' ok_pushbuttontext = 'OK' icon_ok_push = lv_icon_ok first_pushbutton = 'Select branch' icon_button_1 = lv_icon_br - second_pushbutton = 'Create package' - icon_button_2 = lv_icon_msg + second_pushbutton = lv_button2 + icon_button_2 = lv_icon2 IMPORTING returncode = lv_returncode TABLES @@ -24447,27 +24466,41 @@ CLASS lcl_gui_router IMPLEMENTATION. _raise 'Error from POPUP_GET_VALUES'. ENDIF. IF lv_returncode = 'A'. + rs_popup-cancel = abap_true. RETURN. ENDIF. READ TABLE lt_fields INDEX 1 ASSIGNING . ASSERT sy-subrc = 0. - lv_url = -value. - lcl_url=>name( lv_url ). " validate + rs_popup-url = -value. + lcl_url=>name( rs_popup-url ). " validate READ TABLE lt_fields INDEX 2 ASSIGNING . ASSERT sy-subrc = 0. - lv_package = -value. - TRANSLATE lv_package TO UPPER CASE. + rs_popup-package = -value. + TRANSLATE rs_popup-package TO UPPER CASE. READ TABLE lt_fields INDEX 3 ASSIGNING . ASSERT sy-subrc = 0. - lv_branch_name = -value. + rs_popup-branch_name = -value. + + ENDMETHOD. + + METHOD repo_clone. + + DATA: ls_popup TYPE ty_popup, + lo_repo TYPE REF TO lcl_repo_online. + + + ls_popup = repo_popup( iv_url ). + IF ls_popup-cancel = abap_true. + RETURN. + ENDIF. lo_repo = lcl_app=>repo_srv( )->new_online( - iv_url = lv_url - iv_branch_name = lv_branch_name - iv_package = lv_package ). + iv_url = ls_popup-url + iv_branch_name = ls_popup-branch_name + iv_package = ls_popup-package ). lo_repo->status( ). " check for errors lo_repo->deserialize( ). @@ -24673,11 +24706,22 @@ CLASS lcl_gui_router IMPLEMENTATION. ENDMETHOD. "repo_package_zip - METHOD change_branch. + METHOD switch_branch. + + DATA: lo_repo TYPE REF TO lcl_repo_online, + ls_popup TYPE ty_popup. + + + lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). + + ls_popup = repo_popup( + iv_url = lo_repo->get_url( ) + iv_package = lo_repo->get_package( ) + iv_branch = lo_repo->get_branch_name( ) ). + IF ls_popup-cancel = abap_true. + RETURN. + ENDIF. -* DATA: lo_repo TYPE REF TO lcl_repo_online. -* -* lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). CALL FUNCTION 'POPUP_TO_INFORM' EXPORTING @@ -24685,6 +24729,10 @@ CLASS lcl_gui_router IMPLEMENTATION. txt1 = 'see https://github.com/larshp/abapGit/issues/265' txt2 = '' ##NO_TEXT. +*1. updating the mv_branch field to the sha1 of the new branch. +*2. Update the persisted branch name +*3. call lcl_repo_online->deserialize. + ENDMETHOD. METHOD reset.