From fb91909947994303bc9f5c87e4c8db4d535a28c5 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 18 Jun 2018 14:38:16 +0000 Subject: [PATCH] tag popups dependency injection --- src/ui/zcl_abapgit_services_git.clas.abap | 8 +- src/ui/zcl_abapgit_tag_popups.clas.abap | 201 ++++++++++------------ src/ui/zcl_abapgit_tag_popups.clas.xml | 1 - src/ui/zcl_abapgit_ui_factory.clas.abap | 19 +- src/ui/zcl_abapgit_ui_injector.clas.abap | 12 +- src/ui/zif_abapgit_tag_popups.intf.abap | 21 +++ src/ui/zif_abapgit_tag_popups.intf.xml | 16 ++ 7 files changed, 162 insertions(+), 116 deletions(-) create mode 100644 src/ui/zif_abapgit_tag_popups.intf.abap create mode 100644 src/ui/zif_abapgit_tag_popups.intf.xml diff --git a/src/ui/zcl_abapgit_services_git.clas.abap b/src/ui/zcl_abapgit_services_git.clas.abap index 85b37b82c..5da98c676 100644 --- a/src/ui/zcl_abapgit_services_git.clas.abap +++ b/src/ui/zcl_abapgit_services_git.clas.abap @@ -77,7 +77,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION. +CLASS zcl_abapgit_services_git IMPLEMENTATION. METHOD commit. @@ -188,7 +188,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION. lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). - ls_tag = zcl_abapgit_tag_popups=>tag_select_popup( lo_repo ). + ls_tag = zcl_abapgit_ui_factory=>get_tag_popups( )->tag_select_popup( lo_repo ). IF ls_tag IS INITIAL. RAISE EXCEPTION TYPE zcx_abapgit_cancel. ENDIF. @@ -312,7 +312,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION. lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). - ls_tag = zcl_abapgit_tag_popups=>tag_select_popup( lo_repo ). + ls_tag = zcl_abapgit_ui_factory=>get_tag_popups( )->tag_select_popup( lo_repo ). IF ls_tag IS INITIAL. RAISE EXCEPTION TYPE zcx_abapgit_cancel. ENDIF. @@ -330,7 +330,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION. lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). - zcl_abapgit_tag_popups=>tag_list_popup( lo_repo ). + zcl_abapgit_ui_factory=>get_tag_popups( )->tag_list_popup( lo_repo ). ENDMETHOD. ENDCLASS. diff --git a/src/ui/zcl_abapgit_tag_popups.clas.abap b/src/ui/zcl_abapgit_tag_popups.clas.abap index 162cace75..366a18648 100644 --- a/src/ui/zcl_abapgit_tag_popups.clas.abap +++ b/src/ui/zcl_abapgit_tag_popups.clas.abap @@ -1,26 +1,11 @@ CLASS zcl_abapgit_tag_popups DEFINITION PUBLIC FINAL - CREATE PUBLIC. + CREATE PRIVATE + GLOBAL FRIENDS zcl_abapgit_ui_factory. PUBLIC SECTION. - - CLASS-METHODS: - tag_list_popup - IMPORTING - io_repo TYPE REF TO zcl_abapgit_repo_online - RETURNING - VALUE(rs_tag) TYPE zif_abapgit_definitions=>ty_git_tag - RAISING - zcx_abapgit_exception, - - tag_select_popup - IMPORTING - io_repo TYPE REF TO zcl_abapgit_repo_online - RETURNING - VALUE(rs_tag) TYPE zif_abapgit_definitions=>ty_git_tag - RAISING - zcx_abapgit_exception . + INTERFACES: zif_abapgit_tag_popups. PRIVATE SECTION. TYPES: @@ -31,12 +16,12 @@ CLASS zcl_abapgit_tag_popups DEFINITION tty_tag_out TYPE STANDARD TABLE OF ty_tag_out WITH NON-UNIQUE DEFAULT KEY. - CLASS-DATA: + DATA: mt_tags TYPE tty_tag_out, mo_docking_container TYPE REF TO cl_gui_docking_container, mo_text_control TYPE REF TO cl_gui_textedit. - CLASS-METHODS: + METHODS: on_double_click FOR EVENT double_click OF cl_salv_events_table IMPORTING row column, @@ -59,6 +44,39 @@ ENDCLASS. CLASS zcl_abapgit_tag_popups IMPLEMENTATION. + METHOD clean_up. + + IF mo_text_control IS BOUND. + + mo_text_control->finalize( ). + mo_text_control->free( + EXCEPTIONS + cntl_error = 1 + cntl_system_error = 2 + OTHERS = 3 ). + ASSERT sy-subrc = 0. + + CLEAR: mo_text_control. + + ENDIF. + + IF mo_docking_container IS BOUND. + + mo_docking_container->finalize( ). + mo_docking_container->free( + EXCEPTIONS + cntl_error = 1 + cntl_system_error = 2 + OTHERS = 3 ). + ASSERT sy-subrc = 0. + + CLEAR: mo_docking_container. + + ENDIF. + + ENDMETHOD. + + METHOD on_double_click. FIELD-SYMBOLS: TYPE zcl_abapgit_tag_popups=>ty_tag_out. @@ -99,7 +117,60 @@ CLASS zcl_abapgit_tag_popups IMPLEMENTATION. ENDMETHOD. - METHOD tag_list_popup. + METHOD show_docking_container_with. + + IF mo_docking_container IS NOT BOUND. + + CREATE OBJECT mo_docking_container + EXPORTING + side = cl_gui_docking_container=>dock_at_bottom + extension = 120 + EXCEPTIONS + cntl_error = 1 + cntl_system_error = 2 + create_error = 3 + lifetime_error = 4 + lifetime_dynpro_dynpro_link = 5 + OTHERS = 6. + ASSERT sy-subrc = 0. + + ENDIF. + + IF mo_text_control IS NOT BOUND. + CREATE OBJECT mo_text_control + EXPORTING + parent = mo_docking_container + EXCEPTIONS + error_cntl_create = 1 + error_cntl_init = 2 + error_cntl_link = 3 + error_dp_create = 4 + gui_type_not_supported = 5 + OTHERS = 6. + ASSERT sy-subrc = 0. + + mo_text_control->set_readonly_mode( + EXCEPTIONS + error_cntl_call_method = 1 + invalid_parameter = 2 + OTHERS = 3 ). + ASSERT sy-subrc = 0. + + ENDIF. + + mo_text_control->set_textstream( + EXPORTING + text = iv_text + EXCEPTIONS + error_cntl_call_method = 1 + not_supported_by_gui = 2 + OTHERS = 3 ). + ASSERT sy-subrc = 0. + + ENDMETHOD. + + + METHOD zif_abapgit_tag_popups~tag_list_popup. DATA: lo_alv TYPE REF TO cl_salv_table, lo_table_header TYPE REF TO cl_salv_form_header_info, @@ -190,7 +261,7 @@ CLASS zcl_abapgit_tag_popups IMPLEMENTATION. ENDMETHOD. - METHOD tag_select_popup. + METHOD zif_abapgit_tag_popups~tag_select_popup. DATA: lt_tags TYPE zif_abapgit_definitions=>ty_git_tag_list_tt, lv_answer TYPE c LENGTH 1, @@ -247,90 +318,4 @@ CLASS zcl_abapgit_tag_popups IMPLEMENTATION. rs_tag = . ENDMETHOD. - - METHOD clean_up. - - IF mo_text_control IS BOUND. - - mo_text_control->finalize( ). - mo_text_control->free( - EXCEPTIONS - cntl_error = 1 - cntl_system_error = 2 - OTHERS = 3 ). - ASSERT sy-subrc = 0. - - CLEAR: mo_text_control. - - ENDIF. - - IF mo_docking_container IS BOUND. - - mo_docking_container->finalize( ). - mo_docking_container->free( - EXCEPTIONS - cntl_error = 1 - cntl_system_error = 2 - OTHERS = 3 ). - ASSERT sy-subrc = 0. - - CLEAR: mo_docking_container. - - ENDIF. - - ENDMETHOD. - - - METHOD show_docking_container_with. - - IF mo_docking_container IS NOT BOUND. - - CREATE OBJECT mo_docking_container - EXPORTING - side = cl_gui_docking_container=>dock_at_bottom - extension = 120 - EXCEPTIONS - cntl_error = 1 - cntl_system_error = 2 - create_error = 3 - lifetime_error = 4 - lifetime_dynpro_dynpro_link = 5 - OTHERS = 6. - ASSERT sy-subrc = 0. - - ENDIF. - - IF mo_text_control IS NOT BOUND. - CREATE OBJECT mo_text_control - EXPORTING - parent = mo_docking_container - EXCEPTIONS - error_cntl_create = 1 - error_cntl_init = 2 - error_cntl_link = 3 - error_dp_create = 4 - gui_type_not_supported = 5 - OTHERS = 6. - ASSERT sy-subrc = 0. - - mo_text_control->set_readonly_mode( - EXCEPTIONS - error_cntl_call_method = 1 - invalid_parameter = 2 - OTHERS = 3 ). - ASSERT sy-subrc = 0. - - ENDIF. - - mo_text_control->set_textstream( - EXPORTING - text = iv_text - EXCEPTIONS - error_cntl_call_method = 1 - not_supported_by_gui = 2 - OTHERS = 3 ). - ASSERT sy-subrc = 0. - - ENDMETHOD. - ENDCLASS. diff --git a/src/ui/zcl_abapgit_tag_popups.clas.xml b/src/ui/zcl_abapgit_tag_popups.clas.xml index 927a080f1..be698d562 100644 --- a/src/ui/zcl_abapgit_tag_popups.clas.xml +++ b/src/ui/zcl_abapgit_tag_popups.clas.xml @@ -7,7 +7,6 @@ 1 E Popups - 2 1 X X diff --git a/src/ui/zcl_abapgit_ui_factory.clas.abap b/src/ui/zcl_abapgit_ui_factory.clas.abap index a78782b76..f8995fe4a 100644 --- a/src/ui/zcl_abapgit_ui_factory.clas.abap +++ b/src/ui/zcl_abapgit_ui_factory.clas.abap @@ -7,11 +7,16 @@ CLASS zcl_abapgit_ui_factory DEFINITION CLASS-METHODS: get_popups RETURNING - VALUE(ri_popups) TYPE REF TO zif_abapgit_popups. + VALUE(ri_popups) TYPE REF TO zif_abapgit_popups, + + get_tag_popups + RETURNING + VALUE(ri_tag_popups) TYPE REF TO zif_abapgit_tag_popups. PRIVATE SECTION. CLASS-DATA: - mi_popups TYPE REF TO zif_abapgit_popups. + mi_popups TYPE REF TO zif_abapgit_popups, + mi_tag_popups TYPE REF TO zif_abapgit_tag_popups. ENDCLASS. @@ -29,4 +34,14 @@ CLASS zcl_abapgit_ui_factory IMPLEMENTATION. ENDMETHOD. + METHOD get_tag_popups. + + IF mi_tag_popups IS INITIAL. + CREATE OBJECT mi_tag_popups TYPE zcl_abapgit_tag_popups. + ENDIF. + + ri_tag_popups = mi_tag_popups. + + ENDMETHOD. + ENDCLASS. diff --git a/src/ui/zcl_abapgit_ui_injector.clas.abap b/src/ui/zcl_abapgit_ui_injector.clas.abap index 8634dc6e8..5445532aa 100644 --- a/src/ui/zcl_abapgit_ui_injector.clas.abap +++ b/src/ui/zcl_abapgit_ui_injector.clas.abap @@ -6,7 +6,11 @@ CLASS zcl_abapgit_ui_injector DEFINITION CLASS-METHODS: set_popups IMPORTING - ii_popups TYPE REF TO zif_abapgit_popups. + ii_popups TYPE REF TO zif_abapgit_popups, + + set_tag_popups + IMPORTING + ii_tag_popups TYPE REF TO zif_abapgit_tag_popups. ENDCLASS. @@ -20,4 +24,10 @@ CLASS zcl_abapgit_ui_injector IMPLEMENTATION. ENDMETHOD. + METHOD set_tag_popups. + + zcl_abapgit_ui_factory=>mi_tag_popups = ii_tag_popups. + + ENDMETHOD. + ENDCLASS. diff --git a/src/ui/zif_abapgit_tag_popups.intf.abap b/src/ui/zif_abapgit_tag_popups.intf.abap new file mode 100644 index 000000000..e1578148e --- /dev/null +++ b/src/ui/zif_abapgit_tag_popups.intf.abap @@ -0,0 +1,21 @@ +INTERFACE zif_abapgit_tag_popups + PUBLIC. + + METHODS: + tag_list_popup + IMPORTING + io_repo TYPE REF TO zcl_abapgit_repo_online + RETURNING + VALUE(rs_tag) TYPE zif_abapgit_definitions=>ty_git_tag + RAISING + zcx_abapgit_exception, + + tag_select_popup + IMPORTING + io_repo TYPE REF TO zcl_abapgit_repo_online + RETURNING + VALUE(rs_tag) TYPE zif_abapgit_definitions=>ty_git_tag + RAISING + zcx_abapgit_exception . + +ENDINTERFACE. diff --git a/src/ui/zif_abapgit_tag_popups.intf.xml b/src/ui/zif_abapgit_tag_popups.intf.xml new file mode 100644 index 000000000..4956bb33e --- /dev/null +++ b/src/ui/zif_abapgit_tag_popups.intf.xml @@ -0,0 +1,16 @@ + + + + + + ZIF_ABAPGIT_TAG_POPUPS + 1 + E + abapGit tag popups + 2 + 1 + X + + + +