tag popups dependency injection

This commit is contained in:
Christian Guenter 2018-06-18 14:38:16 +00:00 committed by christianguenter2
parent 307c1395d2
commit fb91909947
7 changed files with 162 additions and 116 deletions

View File

@ -77,7 +77,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION. CLASS zcl_abapgit_services_git IMPLEMENTATION.
METHOD commit. METHOD commit.
@ -188,7 +188,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). 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. IF ls_tag IS INITIAL.
RAISE EXCEPTION TYPE zcx_abapgit_cancel. RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF. ENDIF.
@ -312,7 +312,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). 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. IF ls_tag IS INITIAL.
RAISE EXCEPTION TYPE zcx_abapgit_cancel. RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF. ENDIF.
@ -330,7 +330,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). 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. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -1,26 +1,11 @@
CLASS zcl_abapgit_tag_popups DEFINITION CLASS zcl_abapgit_tag_popups DEFINITION
PUBLIC PUBLIC
FINAL FINAL
CREATE PUBLIC. CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_ui_factory.
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES: zif_abapgit_tag_popups.
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 .
PRIVATE SECTION. PRIVATE SECTION.
TYPES: TYPES:
@ -31,12 +16,12 @@ CLASS zcl_abapgit_tag_popups DEFINITION
tty_tag_out TYPE STANDARD TABLE OF ty_tag_out tty_tag_out TYPE STANDARD TABLE OF ty_tag_out
WITH NON-UNIQUE DEFAULT KEY. WITH NON-UNIQUE DEFAULT KEY.
CLASS-DATA: DATA:
mt_tags TYPE tty_tag_out, mt_tags TYPE tty_tag_out,
mo_docking_container TYPE REF TO cl_gui_docking_container, mo_docking_container TYPE REF TO cl_gui_docking_container,
mo_text_control TYPE REF TO cl_gui_textedit. mo_text_control TYPE REF TO cl_gui_textedit.
CLASS-METHODS: METHODS:
on_double_click FOR EVENT double_click OF cl_salv_events_table on_double_click FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column, IMPORTING row column,
@ -59,6 +44,39 @@ ENDCLASS.
CLASS zcl_abapgit_tag_popups IMPLEMENTATION. 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. METHOD on_double_click.
FIELD-SYMBOLS: <ls_tag> TYPE zcl_abapgit_tag_popups=>ty_tag_out. FIELD-SYMBOLS: <ls_tag> TYPE zcl_abapgit_tag_popups=>ty_tag_out.
@ -99,7 +117,60 @@ CLASS zcl_abapgit_tag_popups IMPLEMENTATION.
ENDMETHOD. 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, DATA: lo_alv TYPE REF TO cl_salv_table,
lo_table_header TYPE REF TO cl_salv_form_header_info, lo_table_header TYPE REF TO cl_salv_form_header_info,
@ -190,7 +261,7 @@ CLASS zcl_abapgit_tag_popups IMPLEMENTATION.
ENDMETHOD. 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, DATA: lt_tags TYPE zif_abapgit_definitions=>ty_git_tag_list_tt,
lv_answer TYPE c LENGTH 1, lv_answer TYPE c LENGTH 1,
@ -247,90 +318,4 @@ CLASS zcl_abapgit_tag_popups IMPLEMENTATION.
rs_tag = <ls_tag>. rs_tag = <ls_tag>.
ENDMETHOD. 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. ENDCLASS.

View File

@ -7,7 +7,6 @@
<VERSION>1</VERSION> <VERSION>1</VERSION>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Popups</DESCRIPT> <DESCRIPT>Popups</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE> <STATE>1</STATE>
<CLSFINAL>X</CLSFINAL> <CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>

View File

@ -7,11 +7,16 @@ CLASS zcl_abapgit_ui_factory DEFINITION
CLASS-METHODS: CLASS-METHODS:
get_popups get_popups
RETURNING 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. PRIVATE SECTION.
CLASS-DATA: 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. ENDCLASS.
@ -29,4 +34,14 @@ CLASS zcl_abapgit_ui_factory IMPLEMENTATION.
ENDMETHOD. 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. ENDCLASS.

View File

@ -6,7 +6,11 @@ CLASS zcl_abapgit_ui_injector DEFINITION
CLASS-METHODS: CLASS-METHODS:
set_popups set_popups
IMPORTING 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. ENDCLASS.
@ -20,4 +24,10 @@ CLASS zcl_abapgit_ui_injector IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD set_tag_popups.
zcl_abapgit_ui_factory=>mi_tag_popups = ii_tag_popups.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -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.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_TAG_POPUPS</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>abapGit tag popups</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>