From 45a2ba1cd1b06edd27b24a81ad3ef786d2b53022 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Fri, 2 Nov 2018 22:04:11 +0100 Subject: [PATCH] add factory for GUI_IS_AVAILABLE This commit adds an indirection for function module GUI_IS_AVAILABLE via interface ZIF_ABAPGIT_GUI_FUNCTIONS and factory ZCL_ABAPGIT_UI_FACTORY. For tests the implementation can be replaced with ZCL_ABAPGIT_UI_INJECTOR=>SET_GUI_FUNCTIONS --- .../zcl_abapgit_objects_activation.clas.abap | 7 ++-- .../zif_abapgit_gui_functions.intf.abap | 9 +++++ .../zif_abapgit_gui_functions.intf.xml | 16 +++++++++ src/ui/zcl_abapgit_gui_functions.clas.abap | 23 ++++++++++++ src/ui/zcl_abapgit_gui_functions.clas.xml | 18 ++++++++++ src/ui/zcl_abapgit_ui_factory.clas.abap | 36 +++++++++++++------ src/ui/zcl_abapgit_ui_injector.clas.abap | 22 +++++++++--- 7 files changed, 112 insertions(+), 19 deletions(-) create mode 100644 src/objects/zif_abapgit_gui_functions.intf.abap create mode 100644 src/objects/zif_abapgit_gui_functions.intf.xml create mode 100644 src/ui/zcl_abapgit_gui_functions.clas.abap create mode 100644 src/ui/zcl_abapgit_gui_functions.clas.xml diff --git a/src/objects/zcl_abapgit_objects_activation.clas.abap b/src/objects/zcl_abapgit_objects_activation.clas.abap index 468088f72..5c962df19 100644 --- a/src/objects/zcl_abapgit_objects_activation.clas.abap +++ b/src/objects/zcl_abapgit_objects_activation.clas.abap @@ -183,13 +183,12 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION. METHOD activate_old. - DATA: lv_popup TYPE abap_bool. + DATA: lv_popup TYPE abap_bool, + li_gui TYPE REF TO zif_abapgit_gui_functions. IF gt_objects IS NOT INITIAL. - CALL FUNCTION 'GUI_IS_AVAILABLE' - IMPORTING - return = lv_popup. + lv_popup = zcl_abapgit_ui_factory=>get_gui_functions( )->gui_is_available( ). CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' EXPORTING diff --git a/src/objects/zif_abapgit_gui_functions.intf.abap b/src/objects/zif_abapgit_gui_functions.intf.abap new file mode 100644 index 000000000..cc02d52cc --- /dev/null +++ b/src/objects/zif_abapgit_gui_functions.intf.abap @@ -0,0 +1,9 @@ +INTERFACE zif_abapgit_gui_functions + PUBLIC . + + METHODS: + gui_is_available + RETURNING + VALUE(rv_gui_is_available) TYPE abap_bool. + +ENDINTERFACE. diff --git a/src/objects/zif_abapgit_gui_functions.intf.xml b/src/objects/zif_abapgit_gui_functions.intf.xml new file mode 100644 index 000000000..65aba72bd --- /dev/null +++ b/src/objects/zif_abapgit_gui_functions.intf.xml @@ -0,0 +1,16 @@ + + + + + + ZIF_ABAPGIT_GUI_FUNCTIONS + 1 + E + GUI functions + 2 + 1 + X + + + + diff --git a/src/ui/zcl_abapgit_gui_functions.clas.abap b/src/ui/zcl_abapgit_gui_functions.clas.abap new file mode 100644 index 000000000..9c0170972 --- /dev/null +++ b/src/ui/zcl_abapgit_gui_functions.clas.abap @@ -0,0 +1,23 @@ +CLASS zcl_abapgit_gui_functions DEFINITION + PUBLIC + CREATE PUBLIC . + + PUBLIC SECTION. + INTERFACES: + zif_abapgit_gui_functions. + +ENDCLASS. + + + +CLASS zcl_abapgit_gui_functions IMPLEMENTATION. + + METHOD zif_abapgit_gui_functions~gui_is_available. + + CALL FUNCTION 'GUI_IS_AVAILABLE' + IMPORTING + return = rv_gui_is_available. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/ui/zcl_abapgit_gui_functions.clas.xml b/src/ui/zcl_abapgit_gui_functions.clas.xml new file mode 100644 index 000000000..a256ceae4 --- /dev/null +++ b/src/ui/zcl_abapgit_gui_functions.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_GUI_FUNCTIONS + 1 + E + GUI function modules + 2 + 1 + X + X + X + + + + diff --git a/src/ui/zcl_abapgit_ui_factory.clas.abap b/src/ui/zcl_abapgit_ui_factory.clas.abap index f8995fe4a..1c4ed4d76 100644 --- a/src/ui/zcl_abapgit_ui_factory.clas.abap +++ b/src/ui/zcl_abapgit_ui_factory.clas.abap @@ -11,36 +11,52 @@ CLASS zcl_abapgit_ui_factory DEFINITION get_tag_popups RETURNING - VALUE(ri_tag_popups) TYPE REF TO zif_abapgit_tag_popups. + VALUE(ri_tag_popups) TYPE REF TO zif_abapgit_tag_popups, + + get_gui_functions + RETURNING + VALUE(ri_gui_functions) TYPE REF TO zif_abapgit_gui_functions. PRIVATE SECTION. CLASS-DATA: - mi_popups TYPE REF TO zif_abapgit_popups, - mi_tag_popups TYPE REF TO zif_abapgit_tag_popups. + gi_popups TYPE REF TO zif_abapgit_popups, + gi_tag_popups TYPE REF TO zif_abapgit_tag_popups, + gi_gui_functions TYPE REF TO zif_abapgit_gui_functions. ENDCLASS. - CLASS zcl_abapgit_ui_factory IMPLEMENTATION. METHOD get_popups. - IF mi_popups IS INITIAL. - CREATE OBJECT mi_popups TYPE zcl_abapgit_popups. + IF gi_popups IS INITIAL. + CREATE OBJECT gi_popups TYPE zcl_abapgit_popups. ENDIF. - ri_popups = mi_popups. + ri_popups = gi_popups. ENDMETHOD. + METHOD get_tag_popups. - IF mi_tag_popups IS INITIAL. - CREATE OBJECT mi_tag_popups TYPE zcl_abapgit_tag_popups. + IF gi_tag_popups IS INITIAL. + CREATE OBJECT gi_tag_popups TYPE zcl_abapgit_tag_popups. ENDIF. - ri_tag_popups = mi_tag_popups. + ri_tag_popups = gi_tag_popups. + + ENDMETHOD. + + + METHOD get_gui_functions. + + IF gi_gui_functions IS INITIAL. + CREATE OBJECT gi_gui_functions TYPE zcl_abapgit_gui_functions. + ENDIF. + + ri_gui_functions = gi_gui_functions. ENDMETHOD. diff --git a/src/ui/zcl_abapgit_ui_injector.clas.abap b/src/ui/zcl_abapgit_ui_injector.clas.abap index 5445532aa..c3eb275e1 100644 --- a/src/ui/zcl_abapgit_ui_injector.clas.abap +++ b/src/ui/zcl_abapgit_ui_injector.clas.abap @@ -10,24 +10,36 @@ CLASS zcl_abapgit_ui_injector DEFINITION set_tag_popups IMPORTING - ii_tag_popups TYPE REF TO zif_abapgit_tag_popups. + ii_tag_popups TYPE REF TO zif_abapgit_tag_popups, + + set_gui_functions + IMPORTING + ii_gui_functions TYPE REF TO zif_abapgit_gui_functions. ENDCLASS. -CLASS zcl_abapgit_ui_injector IMPLEMENTATION. +CLASS ZCL_ABAPGIT_UI_INJECTOR IMPLEMENTATION. + + + METHOD set_gui_functions. + + zcl_abapgit_ui_factory=>gi_gui_functions = ii_gui_functions. + + ENDMETHOD. + METHOD set_popups. - zcl_abapgit_ui_factory=>mi_popups = ii_popups. + zcl_abapgit_ui_factory=>gi_popups = ii_popups. ENDMETHOD. + METHOD set_tag_popups. - zcl_abapgit_ui_factory=>mi_tag_popups = ii_tag_popups. + zcl_abapgit_ui_factory=>gi_tag_popups = ii_tag_popups. ENDMETHOD. - ENDCLASS.