CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC. PUBLIC SECTION. CONSTANTS: c_commitmsg_comment_length_dft TYPE i VALUE 50. CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72. METHODS: set_proxy_url IMPORTING iv_url TYPE string, set_proxy_port IMPORTING iv_port TYPE string, set_proxy_authentication IMPORTING iv_auth TYPE abap_bool, get_proxy_url RETURNING VALUE(rv_proxy_url) TYPE string, get_proxy_port RETURNING VALUE(rv_port) TYPE string, get_proxy_authentication RETURNING VALUE(rv_auth) TYPE abap_bool, set_run_critical_tests IMPORTING iv_run TYPE abap_bool, get_run_critical_tests RETURNING VALUE(rv_run) TYPE abap_bool, set_experimental_features IMPORTING iv_run TYPE abap_bool, get_experimental_features RETURNING VALUE(rv_run) TYPE abap_bool, set_max_lines IMPORTING iv_lines TYPE i, get_max_lines RETURNING VALUE(rv_lines) TYPE i, set_adt_jump_enanbled IMPORTING iv_adt_jump_enabled TYPE abap_bool, get_adt_jump_enabled RETURNING VALUE(rv_adt_jump_enabled) TYPE abap_bool, set_commitmsg_comment_length IMPORTING iv_length TYPE i, get_commitmsg_comment_length RETURNING VALUE(rv_length) TYPE i, set_commitmsg_body_size IMPORTING iv_length TYPE i, get_commitmsg_body_size RETURNING VALUE(rv_length) TYPE i, get_settings_xml RETURNING VALUE(rv_settings_xml) TYPE string RAISING zcx_abapgit_exception, get_user_settings RETURNING VALUE(rs_settings) TYPE zif_abapgit_definitions=>ty_s_user_settings RAISING zcx_abapgit_exception, set_xml_settings IMPORTING iv_settings_xml TYPE string RAISING zcx_abapgit_exception, set_defaults, set_user_settings IMPORTING is_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings, get_show_default_repo RETURNING VALUE(rv_show_default_repo) TYPE abap_bool, set_show_default_repo IMPORTING iv_show_default_repo TYPE abap_bool, set_link_hints_enabled IMPORTING iv_link_hints_enabled TYPE abap_bool, get_link_hints_enabled RETURNING VALUE(rv_link_hints_enabled) TYPE abap_bool RAISING zcx_abapgit_exception, set_link_hint_key IMPORTING iv_link_hint_key TYPE char01, get_link_hint_key RETURNING VALUE(rv_link_hint_key) TYPE char01, get_link_hint_background_color RETURNING VALUE(rv_background_color) TYPE string, set_link_hint_background_color IMPORTING iv_background_color TYPE string, set_hotkeys IMPORTING it_hotkeys TYPE zif_abapgit_definitions=>tty_hotkey, get_hotkeys RETURNING VALUE(rt_hotkeys) TYPE zif_abapgit_definitions=>tty_hotkey RAISING zcx_abapgit_exception. PRIVATE SECTION. TYPES: BEGIN OF ty_s_settings, proxy_url TYPE string, proxy_port TYPE string, proxy_auth TYPE string, run_critical_tests TYPE abap_bool, experimental_features TYPE abap_bool, commitmsg_comment_length TYPE i, commitmsg_body_size TYPE i, END OF ty_s_settings. DATA: ms_settings TYPE ty_s_settings, ms_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings. METHODS: set_default_link_hint_key, set_default_link_hint_bg_color. ENDCLASS. CLASS zcl_abapgit_settings IMPLEMENTATION. METHOD get_adt_jump_enabled. rv_adt_jump_enabled = ms_user_settings-adt_jump_enabled. ENDMETHOD. METHOD get_commitmsg_body_size. rv_length = ms_settings-commitmsg_body_size. ENDMETHOD. METHOD get_commitmsg_comment_length. rv_length = ms_settings-commitmsg_comment_length. ENDMETHOD. METHOD get_experimental_features. rv_run = ms_settings-experimental_features. ENDMETHOD. METHOD get_link_hints_enabled. rv_link_hints_enabled = ms_user_settings-link_hints_enabled. ENDMETHOD. METHOD get_link_hint_key. rv_link_hint_key = ms_user_settings-link_hint_key. ENDMETHOD. METHOD get_max_lines. rv_lines = ms_user_settings-max_lines. ENDMETHOD. METHOD get_proxy_authentication. rv_auth = ms_settings-proxy_auth. ENDMETHOD. METHOD get_proxy_port. rv_port = ms_settings-proxy_port. ENDMETHOD. METHOD get_proxy_url. rv_proxy_url = ms_settings-proxy_url. ENDMETHOD. METHOD get_run_critical_tests. rv_run = ms_settings-run_critical_tests. ENDMETHOD. METHOD get_settings_xml. DATA: lo_output TYPE REF TO zcl_abapgit_xml_output. CREATE OBJECT lo_output. lo_output->add( iv_name = zcl_abapgit_persistence_db=>c_type_settings ig_data = ms_settings ). rv_settings_xml = lo_output->render( ). ENDMETHOD. METHOD get_show_default_repo. rv_show_default_repo = ms_user_settings-show_default_repo. ENDMETHOD. METHOD get_user_settings. rs_settings = ms_user_settings. ENDMETHOD. METHOD set_adt_jump_enanbled. ms_user_settings-adt_jump_enabled = iv_adt_jump_enabled. ENDMETHOD. METHOD set_commitmsg_body_size. ms_settings-commitmsg_body_size = iv_length. ENDMETHOD. METHOD set_commitmsg_comment_length. ms_settings-commitmsg_comment_length = iv_length. ENDMETHOD. METHOD set_defaults. CLEAR ms_settings. set_proxy_authentication( abap_false ). set_run_critical_tests( abap_false ). set_experimental_features( abap_false ). set_max_lines( 500 ). set_adt_jump_enanbled( abap_true ). set_show_default_repo( abap_false ). set_commitmsg_comment_length( c_commitmsg_comment_length_dft ). set_commitmsg_body_size( c_commitmsg_body_size_dft ). set_default_link_hint_key( ). set_default_link_hint_bg_color( ). ENDMETHOD. METHOD set_default_link_hint_bg_color. set_link_hint_background_color( |lightgreen| ). ENDMETHOD. METHOD set_default_link_hint_key. set_link_hint_key( |f| ). ENDMETHOD. METHOD set_experimental_features. ms_settings-experimental_features = iv_run. ENDMETHOD. METHOD set_link_hints_enabled. ms_user_settings-link_hints_enabled = iv_link_hints_enabled. ENDMETHOD. METHOD set_link_hint_key. ms_user_settings-link_hint_key = iv_link_hint_key. ENDMETHOD. METHOD set_max_lines. ms_user_settings-max_lines = iv_lines. ENDMETHOD. METHOD set_proxy_authentication. ms_settings-proxy_auth = iv_auth. ENDMETHOD. METHOD set_proxy_port. ms_settings-proxy_port = iv_port. ENDMETHOD. METHOD set_proxy_url. ms_settings-proxy_url = iv_url. ENDMETHOD. METHOD set_run_critical_tests. ms_settings-run_critical_tests = iv_run. ENDMETHOD. METHOD set_show_default_repo. ms_user_settings-show_default_repo = iv_show_default_repo. ENDMETHOD. METHOD set_user_settings. ms_user_settings = is_user_settings. IF ms_user_settings-link_hint_key IS INITIAL. set_default_link_hint_key( ). ENDIF. IF ms_user_settings-link_hint_background_color IS INITIAL. set_default_link_hint_bg_color( ). ENDIF. ENDMETHOD. METHOD set_xml_settings. DATA: lo_input TYPE REF TO zcl_abapgit_xml_input. CREATE OBJECT lo_input EXPORTING iv_xml = iv_settings_xml. CLEAR ms_settings. lo_input->read( EXPORTING iv_name = zcl_abapgit_persistence_db=>c_type_settings CHANGING cg_data = ms_settings ). ENDMETHOD. METHOD get_link_hint_background_color. rv_background_color = ms_user_settings-link_hint_background_color. ENDMETHOD. METHOD set_link_hint_background_color. ms_user_settings-link_hint_background_color = iv_background_color. ENDMETHOD. METHOD set_hotkeys. ms_user_settings-hotkeys = it_hotkeys. ENDMETHOD. METHOD get_hotkeys. DATA: lt_default_hotkeys TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action, ls_hotkey LIKE LINE OF rt_hotkeys. FIELD-SYMBOLS: LIKE LINE OF lt_default_hotkeys. IF lines( ms_user_settings-hotkeys ) > 0. rt_hotkeys = ms_user_settings-hotkeys. ELSE. " provide default hotkeys lt_default_hotkeys = zcl_abapgit_hotkeys=>get_default_hotkeys_from_pages( ). LOOP AT lt_default_hotkeys ASSIGNING . ls_hotkey-action = -action. ls_hotkey-sequence = -default_hotkey. INSERT ls_hotkey INTO TABLE rt_hotkeys. ENDLOOP. ENDIF. ENDMETHOD. ENDCLASS.