abapGit/src/zcl_abapgit_settings.clas.abap
Christian Günter 02647d77c6 Hotkeys no longer depend on abapGit installation #2629 (#2633)
* Hotkeys no longer depend on abapGit installation

When this commit is applied hotkeys also work with
the single abapGit report. Limitation is still that users
only can override hotkeys with the installed abapGit repo.

* Fix hotkey display when no user def. hotkeys

* New: Override hotkeys within one file abapGit report

When this commit is applied it's possible to override the default
shortcut also in the one file abapGit report. It's no longer necessary
to installe the full abapGit repo to use this feature

* Extract is_merged + check in hotkey logic
2019-04-19 00:21:36 -07:00

400 lines
9.4 KiB
ABAP

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.
CONSTANTS:
BEGIN OF c_icon_scaling,
large TYPE c VALUE 'L',
small TYPE c VALUE 'S',
END OF c_icon_scaling.
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,
set_parallel_proc_disabled
IMPORTING
iv_disable_parallel_proc TYPE abap_bool,
get_parallel_proc_disabled
RETURNING
VALUE(rv_disable_parallel_proc) TYPE abap_bool,
get_icon_scaling
RETURNING
VALUE(rv_scaling) TYPE zif_abapgit_definitions=>ty_s_user_settings-icon_scaling,
set_icon_scaling
IMPORTING
iv_scaling TYPE zif_abapgit_definitions=>ty_s_user_settings-icon_scaling.
PROTECTED SECTION.
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_hotkeys.
rt_hotkeys = ms_user_settings-hotkeys.
ENDMETHOD.
METHOD get_icon_scaling.
rv_scaling = ms_user_settings-icon_scaling.
ENDMETHOD.
METHOD get_link_hints_enabled.
rv_link_hints_enabled = ms_user_settings-link_hints_enabled.
ENDMETHOD.
METHOD get_link_hint_background_color.
rv_background_color = ms_user_settings-link_hint_background_color.
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_parallel_proc_disabled.
rv_disable_parallel_proc = ms_user_settings-parallel_proc_disabled.
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( ).
set_icon_scaling( '' ).
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_hotkeys.
ms_user_settings-hotkeys = it_hotkeys.
ENDMETHOD.
METHOD set_icon_scaling.
ms_user_settings-icon_scaling = iv_scaling.
IF ms_user_settings-icon_scaling NA c_icon_scaling.
ms_user_settings-icon_scaling = ''. " Reset to default
ENDIF.
ENDMETHOD.
METHOD set_link_hints_enabled.
ms_user_settings-link_hints_enabled = iv_link_hints_enabled.
ENDMETHOD.
METHOD set_link_hint_background_color.
ms_user_settings-link_hint_background_color = iv_background_color.
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_parallel_proc_disabled.
ms_user_settings-parallel_proc_disabled = iv_disable_parallel_proc.
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.
ENDCLASS.