*&---------------------------------------------------------------------* *& Include ZABAPGIT_PAGE_SETTINGS *&---------------------------------------------------------------------* CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. CONSTANTS: BEGIN OF c_action, save_settings TYPE string VALUE 'save_settings', END OF c_action. METHODS constructor. METHODS zif_abapgit_gui_page~on_event REDEFINITION. PROTECTED SECTION. METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mo_settings TYPE REF TO zcl_abapgit_settings, mv_error TYPE abap_bool. METHODS render_proxy RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS render_development_internals RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS render_form_begin RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS render_form_end RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS render_max_lines RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS render_adt_jump_enabled RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS render_commit_msg RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS build_settings IMPORTING it_post_fields TYPE tihttpnvp. METHODS validate_settings. METHODS parse_post IMPORTING it_postdata TYPE cnht_post_data_tab RETURNING VALUE(rt_post_fields) TYPE tihttpnvp. METHODS persist_settings RAISING zcx_abapgit_exception. METHODS read_settings. ENDCLASS. CLASS lcl_gui_page_settings IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_control-page_title = 'SETTINGS'. ENDMETHOD. " constructor. METHOD render_content. CREATE OBJECT ro_html. read_settings( ). ro_html->add( render_form_begin( ) ). ro_html->add( render_proxy( ) ). ro_html->add( |
| ). ro_html->add( render_max_lines( ) ). ro_html->add( |
| ). ro_html->add( render_adt_jump_enabled( ) ). ro_html->add( |
| ). ro_html->add( render_commit_msg( ) ). ro_html->add( |
| ). ro_html->add( render_development_internals( ) ). ro_html->add( render_form_end( ) ). ENDMETHOD. "render_content METHOD render_proxy. CREATE OBJECT ro_html. ro_html->add( |

Proxy

| ). ro_html->add( || ). ro_html->add( |
| ). ro_html->add( `` ). ro_html->add( |
| ). ro_html->add( || ). ro_html->add( |
| ). ro_html->add( `` ). ro_html->add( |
| ). ro_html->add( || ). IF mo_settings->get_proxy_authentication( ) = abap_true. ro_html->add( `` ). ELSE. ro_html->add( `` ). ENDIF. ro_html->add( |
| ). ro_html->add( |
| ). ENDMETHOD. METHOD zif_abapgit_gui_page~on_event. * todo, check input values eg INT DATA: lt_post_fields TYPE tihttpnvp. CASE iv_action. WHEN c_action-save_settings. lt_post_fields = parse_post( it_postdata ). build_settings( lt_post_fields ). validate_settings( ). IF mv_error = abap_true. MESSAGE 'Error when saving settings. Open an issue at https://github.com/larshp/abapGit' TYPE 'E'. ELSE. persist_settings( ). ENDIF. ev_state = zif_abapgit_definitions=>gc_event_state-go_back. ENDCASE. ENDMETHOD. METHOD build_settings. DATA: lv_i_param_value TYPE i. FIELD-SYMBOLS: TYPE ihttpnvp. CREATE OBJECT mo_settings. READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_url'. IF sy-subrc <> 0. mv_error = abap_true. ENDIF. mo_settings->set_proxy_url( -value ). READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_port'. IF sy-subrc <> 0. mv_error = abap_true. ENDIF. mo_settings->set_proxy_port( -value ). READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_auth'. IF sy-subrc = 0. mo_settings->set_proxy_authentication( abap_true ). ELSE. mo_settings->set_proxy_authentication( abap_false ). ENDIF. READ TABLE it_post_fields ASSIGNING WITH KEY name = 'critical_tests'. IF sy-subrc = 0. mo_settings->set_run_critical_tests( abap_true ). ELSE. mo_settings->set_run_critical_tests( abap_false ). ENDIF. READ TABLE it_post_fields ASSIGNING WITH KEY name = 'experimental_features'. IF sy-subrc = 0. mo_settings->set_experimental_features( abap_true ). ELSE. mo_settings->set_experimental_features( abap_false ). ENDIF. READ TABLE it_post_fields ASSIGNING WITH KEY name = 'max_lines'. IF sy-subrc = 0. lv_i_param_value = -value. mo_settings->set_max_lines( lv_i_param_value ). ELSE. mo_settings->set_max_lines( 0 ). ENDIF. READ TABLE it_post_fields ASSIGNING WITH KEY name = 'adt_jump_enabled'. IF sy-subrc = 0. mo_settings->set_adt_jump_enanbled( abap_true ). ELSE. mo_settings->set_adt_jump_enanbled( abap_false ). ENDIF. READ TABLE it_post_fields ASSIGNING WITH KEY name = 'comment_length'. IF sy-subrc = 0. lv_i_param_value = -value. IF lv_i_param_value < zcl_abapgit_settings=>c_commitmsg_comment_length_dft. lv_i_param_value = zcl_abapgit_settings=>c_commitmsg_comment_length_dft. ENDIF. mo_settings->set_commitmsg_comment_length( lv_i_param_value ). ELSE. mo_settings->set_commitmsg_comment_length( zcl_abapgit_settings=>c_commitmsg_comment_length_dft ). ENDIF. READ TABLE it_post_fields ASSIGNING WITH KEY name = 'body_size'. IF sy-subrc = 0. lv_i_param_value = -value. IF lv_i_param_value < zcl_abapgit_settings=>c_commitmsg_body_size_dft. lv_i_param_value = zcl_abapgit_settings=>c_commitmsg_body_size_dft. ENDIF. mo_settings->set_commitmsg_body_size( lv_i_param_value ). ELSE. mo_settings->set_commitmsg_body_size( zcl_abapgit_settings=>c_commitmsg_body_size_dft ). ENDIF. ENDMETHOD. METHOD validate_settings. IF ( mo_settings->get_proxy_url( ) IS NOT INITIAL AND mo_settings->get_proxy_port( ) IS INITIAL ) OR ( mo_settings->get_proxy_url( ) IS INITIAL AND mo_settings->get_proxy_port( ) IS NOT INITIAL ). MESSAGE 'If specifying proxy, specify both URL and port' TYPE 'W'. ENDIF. ENDMETHOD. METHOD parse_post. DATA lv_serialized_post_data TYPE string. CONCATENATE LINES OF it_postdata INTO lv_serialized_post_data. rt_post_fields = lcl_html_action_utils=>parse_fields( lv_serialized_post_data ). ENDMETHOD. METHOD persist_settings. DATA lo_settings_persistence TYPE REF TO lcl_persist_settings. lo_settings_persistence = lcl_app=>settings( ). lo_settings_persistence->modify( mo_settings ). MESSAGE 'Settings succesfully saved' TYPE 'S'. ENDMETHOD. METHOD render_form_begin. CREATE OBJECT ro_html. ro_html->add( '
' ). ro_html->add( `
` ). ENDMETHOD. METHOD render_form_end. CREATE OBJECT ro_html. ro_html->add( '' ). ro_html->add( '
' ). ro_html->add( '
' ). ENDMETHOD. METHOD read_settings. DATA lo_settings_persistence TYPE REF TO lcl_persist_settings. lo_settings_persistence = lcl_app=>settings( ). mo_settings = lo_settings_persistence->read( ). ENDMETHOD. METHOD render_development_internals. DATA: lv_critical_tests TYPE string, lv_experimental TYPE string. IF mo_settings->get_run_critical_tests( ) = abap_true. lv_critical_tests = 'checked'. ENDIF. IF mo_settings->get_experimental_features( ) = abap_true. lv_experimental = 'checked'. ENDIF. CREATE OBJECT ro_html. ro_html->add( |

abapGit Development Internals settings

| ). ro_html->add( ` Enable critical unit tests (see LTCL_DANGEROUS)` ). ro_html->add( |
| ). ro_html->add( ` Enable experimental features` ). ro_html->add( |
| ). ro_html->add( |
| ). ENDMETHOD. METHOD render_max_lines. CREATE OBJECT ro_html. ro_html->add( |

List size

| ). ro_html->add( || ). ro_html->add( |
| ). ro_html->add( `` ). ro_html->add( |
| ). ro_html->add( |
| ). ENDMETHOD. METHOD render_adt_jump_enabled. DATA lv_checked TYPE string. IF mo_settings->get_adt_jump_enabled( ) = abap_true. lv_checked = 'checked'. ENDIF. CREATE OBJECT ro_html. ro_html->add( |

ABAP Development Tools (ADT)

| ). ro_html->add( ` Enable jump to ADT first` ). ro_html->add( |
| ). ro_html->add( |
| ). ENDMETHOD. METHOD render_commit_msg. CREATE OBJECT ro_html. ro_html->add( |

Commit Message

| ). ro_html->add( || ). ro_html->add( |
| ). ro_html->add( || ). ro_html->add( |
| ). ro_html->add( || ). ro_html->add( |
| ). ro_html->add( || ). ro_html->add( |
| ). ro_html->add( |
| ). ENDMETHOD. ENDCLASS.