abapGit/src/ui/zcl_abapgit_gui_page_ch_remote.clas.abap
Lars Hvam 26c81be9fd
Refactor "Change Remote" to html form (#4617)
* Refactor "Change Remote" to html form

* upd

* cleanup

* less whitespace

* update logic and descriptions
2021-03-10 07:29:13 +01:00

101 lines
2.4 KiB
ABAP

CLASS zcl_abapgit_gui_page_ch_remote DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_gui_page
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS constructor
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception .
METHODS zif_abapgit_gui_event_handler~on_event
REDEFINITION .
PROTECTED SECTION.
METHODS render_content
REDEFINITION .
PRIVATE SECTION.
CONSTANTS c_remote_field TYPE string VALUE 'REMOTE' ##NO_TEXT.
CONSTANTS:
BEGIN OF c_event,
go_back TYPE string VALUE 'go_back',
save TYPE string VALUE 'save',
END OF c_event .
DATA mv_key TYPE zif_abapgit_persistence=>ty_repo-key .
DATA mo_repo TYPE REF TO zcl_abapgit_repo_online .
ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_CH_REMOTE IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
ms_control-page_title = 'Change Remote'.
ENDMETHOD.
METHOD render_content.
DATA lo_form TYPE REF TO zcl_abapgit_html_form.
DATA lo_map TYPE REF TO zcl_abapgit_string_map.
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
CREATE OBJECT lo_map.
lo_form = zcl_abapgit_html_form=>create( ).
lo_form->text(
iv_name = c_remote_field
iv_required = abap_true
iv_label = 'New GIT Repository URL'
iv_hint = 'HTTPS address of the repository' ).
lo_map->set(
iv_key = c_remote_field
iv_val = mo_repo->get_url( ) ).
lo_form->command(
iv_label = 'Save'
iv_cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main
iv_action = c_event-save ).
lo_form->command(
iv_label = 'Back'
iv_action = c_event-go_back ).
ri_html->add( lo_form->render( lo_map ) ).
ENDMETHOD.
METHOD zif_abapgit_gui_event_handler~on_event.
DATA lv_url TYPE string.
CASE ii_event->mv_action.
WHEN c_event-go_back.
rs_handled-state = zcl_abapgit_gui=>c_event_state-go_back.
WHEN c_event-save.
lv_url = condense( ii_event->form_data( )->get( c_remote_field ) ).
ASSERT NOT lv_url IS INITIAL.
zcl_abapgit_repo_srv=>get_instance( )->validate_url( lv_url ).
mo_repo->set_url( lv_url ).
COMMIT WORK.
rs_handled-state = zcl_abapgit_gui=>c_event_state-go_back.
ENDCASE.
ENDMETHOD.
ENDCLASS.