Introduce ZIF_ABAPGIT_POPUPS

- create popups with factory ZCL_ABAPGIT_UI_FACTORY
- inject test doubles with injector class ZCL_ABAPGIT_UI_INJECTOR
This commit is contained in:
christianguenter2 2018-06-15 09:35:33 +02:00
parent 4f59c42fb4
commit 4662883723
18 changed files with 508 additions and 215 deletions

View File

@ -53,7 +53,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB IMPLEMENTATION.
ASSERT is_key-type IS NOT INITIAL.
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = 'Warning'
text_question = 'Delete?'
text_button_1 = 'Ok'

View File

@ -270,7 +270,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MAIN IMPLEMENTATION.
ls_item TYPE zif_abapgit_definitions=>ty_item.
ls_tadir = zcl_abapgit_popups=>popup_object( ).
ls_tadir = zcl_abapgit_ui_factory=>get_popups( )->popup_object( ).
IF ls_tadir IS INITIAL.
RETURN.
ENDIF.

View File

@ -108,7 +108,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
DATA: lv_class_name TYPE string,
lv_cancel TYPE abap_bool.
zcl_abapgit_popups=>run_page_class_popup(
zcl_abapgit_ui_factory=>get_popups( )->run_page_class_popup(
IMPORTING
ev_name = lv_class_name
ev_cancel = lv_cancel ).

View File

@ -1,151 +1,30 @@
CLASS zcl_abapgit_popups DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_ui_factory.
PUBLIC SECTION.
TYPES:
BEGIN OF ty_popup,
url TYPE string,
package TYPE devclass,
branch_name TYPE string,
cancel TYPE abap_bool,
END OF ty_popup .
CONSTANTS c_new_branch_label TYPE string VALUE '+ create new ...' ##NO_TEXT.
CLASS-METHODS popup_package_export
EXPORTING
!ev_package TYPE devclass
!ev_folder_logic TYPE string
RAISING
zcx_abapgit_exception .
CLASS-METHODS popup_folder_logic
RETURNING
VALUE(rv_folder_logic) TYPE string
RAISING
zcx_abapgit_exception .
CLASS-METHODS popup_object
RETURNING
VALUE(rs_tadir) TYPE tadir
RAISING
zcx_abapgit_exception .
CLASS-METHODS create_branch_popup
EXPORTING
!ev_name TYPE string
!ev_cancel TYPE abap_bool
RAISING
zcx_abapgit_exception .
CLASS-METHODS run_page_class_popup
EXPORTING
!ev_name TYPE string
!ev_cancel TYPE abap_bool
RAISING
zcx_abapgit_exception .
CLASS-METHODS repo_new_offline
RETURNING
VALUE(rs_popup) TYPE ty_popup
RAISING
zcx_abapgit_exception .
CLASS-METHODS branch_list_popup
IMPORTING
!iv_url TYPE string
!iv_default_branch TYPE string OPTIONAL
!iv_show_new_option TYPE abap_bool OPTIONAL
RETURNING
VALUE(rs_branch) TYPE zif_abapgit_definitions=>ty_git_branch
RAISING
zcx_abapgit_exception .
CLASS-METHODS repo_popup
IMPORTING
!iv_url TYPE string
!iv_package TYPE devclass OPTIONAL
!iv_branch TYPE string DEFAULT 'refs/heads/master'
!iv_freeze_package TYPE abap_bool OPTIONAL
!iv_freeze_url TYPE abap_bool OPTIONAL
!iv_title TYPE clike DEFAULT 'Clone repository ...'
RETURNING
VALUE(rs_popup) TYPE ty_popup
RAISING
zcx_abapgit_exception ##NO_TEXT.
CLASS-METHODS popup_to_confirm
IMPORTING
!titlebar TYPE clike
!text_question TYPE clike
!text_button_1 TYPE clike DEFAULT 'Yes'
!icon_button_1 TYPE icon-name DEFAULT space
!text_button_2 TYPE clike DEFAULT 'No'
!icon_button_2 TYPE icon-name DEFAULT space
!default_button TYPE char1 DEFAULT '1'
!display_cancel_button TYPE char1 DEFAULT abap_true
RETURNING
VALUE(rv_answer) TYPE char1
RAISING
zcx_abapgit_exception .
CLASS-METHODS popup_to_inform
IMPORTING
!titlebar TYPE clike
!text_message TYPE clike
RAISING
zcx_abapgit_exception .
CLASS-METHODS popup_to_create_package
EXPORTING
!es_package_data TYPE scompkdtln
!ev_create TYPE boolean
RAISING
zcx_abapgit_exception .
CLASS-METHODS popup_to_create_transp_branch
IMPORTING
!it_transport_headers TYPE trwbo_request_headers
RETURNING
VALUE(rs_transport_branch) TYPE zif_abapgit_definitions=>ty_transport_to_branch
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS popup_to_select_transports
RETURNING
VALUE(rt_trkorr) TYPE trwbo_request_headers .
CLASS-METHODS popup_to_select_from_list
IMPORTING
!it_list TYPE STANDARD TABLE
!i_header_text TYPE csequence
!i_select_column_text TYPE csequence
!it_columns_to_display TYPE stringtab
EXPORTING
VALUE(et_list) TYPE STANDARD TABLE
RAISING
zcx_abapgit_cancel
zcx_abapgit_exception .
CLASS-METHODS branch_popup_callback
IMPORTING
!iv_code TYPE clike
CHANGING
!ct_fields TYPE zif_abapgit_definitions=>ty_sval_tt
!cs_error TYPE svale
!cv_show_popup TYPE char01
RAISING
zcx_abapgit_exception .
CLASS-METHODS package_popup_callback
IMPORTING
!iv_code TYPE clike
CHANGING
!ct_fields TYPE zif_abapgit_definitions=>ty_sval_tt
!cs_error TYPE svale
!cv_show_popup TYPE char01
RAISING
zcx_abapgit_exception .
CLASS-METHODS popup_transport_request
IMPORTING
!is_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
RETURNING
VALUE(rv_transport) TYPE trkorr
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
INTERFACES: zif_abapgit_popups.
ALIASES:
popup_package_export FOR zif_abapgit_popups~popup_package_export,
popup_folder_logic FOR zif_abapgit_popups~popup_folder_logic,
popup_object FOR zif_abapgit_popups~popup_object,
create_branch_popup FOR zif_abapgit_popups~create_branch_popup,
run_page_class_popup FOR zif_abapgit_popups~run_page_class_popup,
repo_new_offline FOR zif_abapgit_popups~repo_new_offline,
branch_list_popup FOR zif_abapgit_popups~branch_list_popup,
repo_popup FOR zif_abapgit_popups~repo_popup,
popup_to_confirm FOR zif_abapgit_popups~popup_to_confirm,
popup_to_inform FOR zif_abapgit_popups~popup_to_inform,
popup_to_create_package FOR zif_abapgit_popups~popup_to_create_package,
popup_to_create_transp_branch FOR zif_abapgit_popups~popup_to_create_transp_branch,
popup_to_select_transports FOR zif_abapgit_popups~popup_to_select_transports,
popup_to_select_from_list FOR zif_abapgit_popups~popup_to_select_from_list,
branch_popup_callback FOR zif_abapgit_popups~branch_popup_callback,
package_popup_callback FOR zif_abapgit_popups~package_popup_callback,
popup_transport_request FOR zif_abapgit_popups~popup_transport_request.
PRIVATE SECTION.
@ -153,12 +32,13 @@ CLASS zcl_abapgit_popups DEFINITION
ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY.
CONSTANTS c_fieldname_selected TYPE lvc_fname VALUE `SELECTED` ##NO_TEXT.
CLASS-DATA go_select_list_popup TYPE REF TO cl_salv_table .
CLASS-DATA gr_table TYPE REF TO data .
CLASS-DATA gv_cancel TYPE abap_bool .
CLASS-DATA go_table_descr TYPE REF TO cl_abap_tabledescr .
CLASS-METHODS add_field
DATA go_select_list_popup TYPE REF TO cl_salv_table .
DATA gr_table TYPE REF TO data .
DATA gv_cancel TYPE abap_bool .
DATA go_table_descr TYPE REF TO cl_abap_tabledescr .
METHODS add_field
IMPORTING
!iv_tabname TYPE sval-tabname
!iv_fieldname TYPE sval-fieldname
@ -168,22 +48,22 @@ CLASS zcl_abapgit_popups DEFINITION
!iv_obligatory TYPE spo_obl OPTIONAL
CHANGING
!ct_fields TYPE ty_sval_tt .
CLASS-METHODS create_new_table
METHODS create_new_table
IMPORTING
!it_list TYPE STANDARD TABLE .
CLASS-METHODS get_selected_rows
METHODS get_selected_rows
EXPORTING
!et_list TYPE INDEX TABLE .
CLASS-METHODS on_select_list_link_click
METHODS on_select_list_link_click
FOR EVENT link_click OF cl_salv_events_table
IMPORTING
!row
!column .
CLASS-METHODS on_select_list_function_click
METHODS on_select_list_function_click
FOR EVENT added_function OF cl_salv_events_table
IMPORTING
!e_salv_function .
CLASS-METHODS extract_field_values
METHODS extract_field_values
IMPORTING
it_fields TYPE ty_sval_tt
EXPORTING
@ -195,8 +75,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
CLASS zcl_abapgit_popups IMPLEMENTATION.
METHOD add_field.
@ -213,7 +92,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD branch_list_popup.
METHOD zif_abapgit_popups~branch_list_popup.
DATA: lo_branches TYPE REF TO zcl_abapgit_git_branch_list,
lt_branches TYPE zif_abapgit_definitions=>ty_git_branch_list_tt,
@ -271,7 +150,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
IF iv_show_new_option = abap_true.
APPEND INITIAL LINE TO lt_selection ASSIGNING <ls_sel>.
<ls_sel>-varoption = c_new_branch_label.
<ls_sel>-varoption = zif_abapgit_popups=>c_new_branch_label.
ENDIF.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
@ -301,8 +180,8 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
READ TABLE lt_selection ASSIGNING <ls_sel> WITH KEY selflag = abap_true.
ASSERT sy-subrc = 0.
IF iv_show_new_option = abap_true AND <ls_sel>-varoption = c_new_branch_label.
rs_branch-name = c_new_branch_label.
IF iv_show_new_option = abap_true AND <ls_sel>-varoption = zif_abapgit_popups=>c_new_branch_label.
rs_branch-name = zif_abapgit_popups=>c_new_branch_label.
ELSE.
REPLACE FIRST OCCURRENCE OF lv_head_suffix IN <ls_sel>-varoption WITH ''.
READ TABLE lt_branches WITH KEY display_name = <ls_sel>-varoption ASSIGNING <ls_branch>.
@ -319,7 +198,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD branch_popup_callback.
METHOD zif_abapgit_popups~branch_popup_callback.
DATA: lv_url TYPE string,
ls_package_data TYPE scompkdtln,
@ -342,7 +221,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDIF.
lv_url = <ls_furl>-value.
ls_branch = zcl_abapgit_popups=>branch_list_popup( lv_url ).
ls_branch = branch_list_popup( lv_url ).
IF ls_branch IS INITIAL.
RETURN.
ENDIF.
@ -358,7 +237,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ASSERT sy-subrc = 0.
ls_package_data-devclass = <ls_fpackage>-value.
zcl_abapgit_popups=>popup_to_create_package(
popup_to_create_package(
IMPORTING
es_package_data = ls_package_data
ev_create = lv_create ).
@ -375,7 +254,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD create_branch_popup.
METHOD zif_abapgit_popups~create_branch_popup.
DATA: lv_answer TYPE c LENGTH 1,
lt_fields TYPE TABLE OF sval.
@ -604,7 +483,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD package_popup_callback.
METHOD zif_abapgit_popups~package_popup_callback.
DATA: ls_package_data TYPE scompkdtln,
lv_create TYPE boolean.
@ -620,7 +499,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ASSERT sy-subrc = 0.
ls_package_data-devclass = <ls_fpackage>-value.
zcl_abapgit_popups=>popup_to_create_package( IMPORTING es_package_data = ls_package_data
popup_to_create_package( IMPORTING es_package_data = ls_package_data
ev_create = lv_create ).
IF lv_create = abap_false.
RETURN.
@ -635,7 +514,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD popup_folder_logic.
METHOD zif_abapgit_popups~popup_folder_logic.
DATA: lv_returncode TYPE c,
lt_fields TYPE TABLE OF sval.
@ -676,7 +555,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD. "popup_package_export
METHOD popup_object.
METHOD zif_abapgit_popups~popup_object.
DATA: lv_returncode TYPE c,
lt_fields TYPE TABLE OF sval.
@ -730,7 +609,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD popup_package_export.
METHOD zif_abapgit_popups~popup_package_export.
DATA: lv_returncode TYPE c,
lt_fields TYPE TABLE OF sval.
@ -781,7 +660,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD. "popup_package_export
METHOD popup_to_confirm.
METHOD zif_abapgit_popups~popup_to_confirm.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
@ -805,7 +684,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD. "popup_to_confirm
METHOD popup_to_create_package.
METHOD zif_abapgit_popups~popup_to_create_package.
CALL FUNCTION 'FUNCTION_EXISTS'
EXPORTING
funcname = 'PB_POPUP_PACKAGE_CREATE'
@ -832,7 +711,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD. " popup_to_create_package
METHOD popup_to_create_transp_branch.
METHOD zif_abapgit_popups~popup_to_create_transp_branch.
DATA: lv_returncode TYPE c,
lt_fields TYPE TABLE OF sval,
lv_transports_as_text TYPE string,
@ -885,7 +764,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD popup_to_inform.
METHOD zif_abapgit_popups~popup_to_inform.
DATA: lv_line1 TYPE char70,
lv_line2 TYPE char70.
@ -904,7 +783,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD. " popup_to_inform.
METHOD popup_to_select_from_list.
METHOD zif_abapgit_popups~popup_to_select_from_list.
DATA:
lo_events TYPE REF TO cl_salv_events_table,
@ -991,7 +870,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD popup_to_select_transports.
METHOD zif_abapgit_popups~popup_to_select_transports.
* todo, method to be renamed, it only returns one transport
@ -1011,7 +890,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD popup_transport_request.
METHOD zif_abapgit_popups~popup_transport_request.
DATA: lt_e071 TYPE STANDARD TABLE OF e071,
lt_e071k TYPE STANDARD TABLE OF e071k.
@ -1042,7 +921,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD repo_new_offline.
METHOD zif_abapgit_popups~repo_new_offline.
DATA: lv_returncode TYPE c,
lt_fields TYPE TABLE OF sval,
@ -1123,7 +1002,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD. "repo_new_offline
METHOD repo_popup.
METHOD zif_abapgit_popups~repo_popup.
DATA: lv_returncode TYPE c,
lv_icon_ok TYPE icon-name,
@ -1242,7 +1121,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD.
METHOD run_page_class_popup.
METHOD zif_abapgit_popups~run_page_class_popup.
DATA: lv_answer TYPE c LENGTH 1,
lt_fields TYPE TABLE OF sval.

View File

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

View File

@ -54,7 +54,7 @@ CLASS ZCL_ABAPGIT_SERVICES_ABAPGIT IMPLEMENTATION.
lv_answer TYPE c LENGTH 1.
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = iv_title
text_question = iv_text
text_button_1 = 'Continue'
@ -94,7 +94,7 @@ CLASS ZCL_ABAPGIT_SERVICES_ABAPGIT IMPLEMENTATION.
IF is_installed( ) = abap_true.
lv_text = 'Seems like abapGit package is already installed. No changes to be done'.
zcl_abapgit_popups=>popup_to_inform(
zcl_abapgit_ui_factory=>get_popups( )->popup_to_inform(
titlebar = lc_title
text_message = lv_text ).
RETURN.
@ -117,7 +117,7 @@ CLASS ZCL_ABAPGIT_SERVICES_ABAPGIT IMPLEMENTATION.
IF is_installed_pi( ) = abap_true.
lv_text = 'Seems like abapGit plugins package is already installed. No changes to be done'.
zcl_abapgit_popups=>popup_to_inform(
zcl_abapgit_ui_factory=>get_popups( )->popup_to_inform(
titlebar = lc_title
text_message = lv_text ).
RETURN.

View File

@ -129,7 +129,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
zcl_abapgit_popups=>create_branch_popup(
zcl_abapgit_ui_factory=>get_popups( )->create_branch_popup(
IMPORTING
ev_name = lv_name
ev_cancel = lv_cancel ).
@ -160,7 +160,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
ls_branch = zcl_abapgit_popups=>branch_list_popup( lo_repo->get_url( ) ).
ls_branch = zcl_abapgit_ui_factory=>get_popups( )->branch_list_popup( lo_repo->get_url( ) ).
IF ls_branch IS INITIAL.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
@ -233,7 +233,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'Cannot reset. Local code is write-protected by repo config' ).
ENDIF.
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = 'Warning'
text_question = 'Reset local objects?'
text_button_1 = 'Ok'
@ -254,7 +254,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
INSERT `OBJECT` INTO TABLE lt_columns.
INSERT `OBJ_NAME` INTO TABLE lt_columns.
zcl_abapgit_popups=>popup_to_select_from_list(
zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_from_list(
EXPORTING
it_list = lt_unnecessary_local_objs
i_header_text = |Which unnecessary objects should be deleted?|
@ -282,7 +282,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
ls_branch = zcl_abapgit_popups=>branch_list_popup(
ls_branch = zcl_abapgit_ui_factory=>get_popups( )->branch_list_popup(
iv_url = lo_repo->get_url( )
iv_default_branch = lo_repo->get_branch_name( )
iv_show_new_option = abap_true ).
@ -290,7 +290,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
IF ls_branch-name = zcl_abapgit_popups=>c_new_branch_label.
IF ls_branch-name = zcl_abapgit_ui_factory=>get_popups( )->c_new_branch_label.
create_branch( iv_key ).
RETURN.
ENDIF.

View File

@ -121,7 +121,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
ENDIF.
IF ls_checks-transport-required = abap_true.
ls_checks-transport-transport = zcl_abapgit_popups=>popup_transport_request(
ls_checks-transport-transport = zcl_abapgit_ui_factory=>get_popups( )->popup_transport_request(
is_transport_type = ls_checks-transport-type ).
ENDIF.
@ -138,9 +138,9 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
METHOD new_offline.
DATA: lo_repo TYPE REF TO zcl_abapgit_repo,
ls_popup TYPE zcl_abapgit_popups=>ty_popup.
ls_popup TYPE zif_abapgit_popups=>ty_popup.
ls_popup = zcl_abapgit_popups=>repo_new_offline( ).
ls_popup = zcl_abapgit_ui_factory=>get_popups( )->repo_new_offline( ).
IF ls_popup-cancel = abap_true.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
@ -159,10 +159,9 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
METHOD new_online.
DATA: ls_popup TYPE zcl_abapgit_popups=>ty_popup.
DATA: ls_popup TYPE zif_abapgit_popups=>ty_popup.
ls_popup = zcl_abapgit_popups=>repo_popup( iv_url ).
ls_popup = zcl_abapgit_ui_factory=>get_popups( )->repo_popup( iv_url ).
IF ls_popup-cancel = abap_true.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
@ -213,7 +212,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
lv_column = 'OBJ_NAME'.
INSERT lv_column INTO TABLE lt_columns.
zcl_abapgit_popups=>popup_to_select_from_list(
zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_from_list(
EXPORTING
it_list = ct_overwrite
i_header_text = |The following Objects have been modified locally.|
@ -255,7 +254,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
'from package' <ls_overwrite>-devclass
INTO lv_question SEPARATED BY space. "#EC NOTEXT
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = 'Warning'
text_question = lv_question
text_button_1 = 'Ok'
@ -296,7 +295,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
lv_question = |This will DELETE all objects in package { lv_package
} ({ lines( lt_tadir ) } objects) from the system|. "#EC NOTEXT
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = 'Uninstall'
text_question = lv_question
text_button_1 = 'Delete'
@ -350,7 +349,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
&& ' Please make sure you don''t have ones like that.'.
ENDIF.
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = 'Warning'
text_question = lv_question
text_button_1 = 'OK'
@ -371,10 +370,10 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
METHOD remote_attach.
DATA: ls_popup TYPE zcl_abapgit_popups=>ty_popup,
DATA: ls_popup TYPE zif_abapgit_popups=>ty_popup,
lo_repo TYPE REF TO zcl_abapgit_repo_online.
ls_popup = zcl_abapgit_popups=>repo_popup(
ls_popup = zcl_abapgit_ui_factory=>get_popups( )->repo_popup(
iv_title = 'Attach repo to remote ...'
iv_url = ''
iv_package = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key )->get_package( )
@ -398,12 +397,12 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
METHOD remote_change.
DATA: ls_popup TYPE zcl_abapgit_popups=>ty_popup,
DATA: ls_popup TYPE zif_abapgit_popups=>ty_popup,
lo_repo TYPE REF TO zcl_abapgit_repo_online.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
ls_popup = zcl_abapgit_popups=>repo_popup(
ls_popup = zcl_abapgit_ui_factory=>get_popups( )->repo_popup(
iv_title = 'Change repo remote ...'
iv_url = lo_repo->get_url( )
iv_package = lo_repo->get_package( )
@ -425,7 +424,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
DATA: lv_answer TYPE c LENGTH 1.
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = 'Make repository OFF-line'
text_question = 'This will detach the repo from remote and make it OFF-line'
text_button_1 = 'Make OFF-line'
@ -459,7 +458,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
lv_question = |This will remove the repository reference to the package { lv_package
}. All objects will safely remain in the system.|.
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
titlebar = 'Remove'
text_question = lv_question
text_button_1 = 'Remove'
@ -503,13 +502,13 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
lo_repository ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_repository_key ).
lt_transport_headers = zcl_abapgit_popups=>popup_to_select_transports( ).
lt_transport_headers = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_transports( ).
lt_transport_objects = zcl_abapgit_transport=>to_tadir( lt_transport_headers ).
IF lt_transport_objects IS INITIAL.
zcx_abapgit_exception=>raise( 'Canceled or List of objects is empty ' ).
ENDIF.
ls_transport_to_branch = zcl_abapgit_popups=>popup_to_create_transp_branch(
ls_transport_to_branch = zcl_abapgit_ui_factory=>get_popups( )->popup_to_create_transp_branch(
lt_transport_headers ).
CREATE OBJECT lo_transport_to_branch.

View File

@ -0,0 +1,32 @@
CLASS zcl_abapgit_ui_factory DEFINITION
PUBLIC
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_ui_injector.
PUBLIC SECTION.
CLASS-METHODS:
get_popups
RETURNING
VALUE(ri_popups) TYPE REF TO zif_abapgit_popups.
PRIVATE SECTION.
CLASS-DATA:
mi_popups TYPE REF TO zif_abapgit_popups.
ENDCLASS.
CLASS zcl_abapgit_ui_factory IMPLEMENTATION.
METHOD get_popups.
IF mi_popups IS INITIAL.
CREATE OBJECT mi_popups TYPE zcl_abapgit_popups.
ENDIF.
ri_popups = mi_popups.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_UI_FACTORY</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>abapGit UI factory</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,23 @@
CLASS zcl_abapgit_ui_injector DEFINITION
PUBLIC
CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
set_popups
IMPORTING
ii_popups TYPE REF TO zif_abapgit_popups.
ENDCLASS.
CLASS zcl_abapgit_ui_injector IMPLEMENTATION.
METHOD set_popups.
zcl_abapgit_ui_factory=>mi_popups = ii_popups.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,149 @@
*"* use this source file for your ABAP unit test classes
CLASS ltd_abapgit_popups_mock DEFINITION.
PUBLIC SECTION.
INTERFACES: zif_abapgit_popups.
ENDCLASS.
CLASS no_dependency_injection DEFINITION FOR TESTING
RISK LEVEL HARMLESS
DURATION SHORT.
PRIVATE SECTION.
METHODS:
no_injection FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS simple_dependency_injection DEFINITION FOR TESTING
RISK LEVEL HARMLESS
DURATION SHORT.
PRIVATE SECTION.
METHODS:
setup,
simple_injection FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltd_abapgit_popups_mock IMPLEMENTATION.
METHOD zif_abapgit_popups~branch_list_popup.
ENDMETHOD.
METHOD zif_abapgit_popups~branch_popup_callback.
ENDMETHOD.
METHOD zif_abapgit_popups~create_branch_popup.
ENDMETHOD.
METHOD zif_abapgit_popups~package_popup_callback.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_folder_logic.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_object.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_package_export.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_to_confirm.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_to_create_package.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_to_create_transp_branch.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_to_inform.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_to_select_from_list.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_to_select_transports.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_transport_request.
ENDMETHOD.
METHOD zif_abapgit_popups~repo_new_offline.
ENDMETHOD.
METHOD zif_abapgit_popups~repo_popup.
ENDMETHOD.
METHOD zif_abapgit_popups~run_page_class_popup.
ENDMETHOD.
ENDCLASS.
CLASS no_dependency_injection IMPLEMENTATION.
METHOD no_injection.
DATA: lo_popups TYPE REF TO zif_abapgit_popups,
lo_class_descr TYPE REF TO cl_abap_classdescr.
lo_popups = zcl_abapgit_ui_factory=>get_popups( ).
lo_class_descr ?= cl_abap_classdescr=>describe_by_object_ref( lo_popups ).
cl_abap_unit_assert=>assert_equals(
exp = '\CLASS=ZCL_ABAPGIT_POPUPS'
act = lo_class_descr->absolute_name ).
ENDMETHOD.
ENDCLASS.
CLASS simple_dependency_injection IMPLEMENTATION.
METHOD setup.
DATA: lo_popups_mock TYPE REF TO ltd_abapgit_popups_mock.
CREATE OBJECT lo_popups_mock.
zcl_abapgit_ui_injector=>set_popups( lo_popups_mock ).
ENDMETHOD.
METHOD simple_injection.
DATA: lo_popups TYPE REF TO zif_abapgit_popups,
lo_class_descr TYPE REF TO cl_abap_classdescr.
lo_popups = zcl_abapgit_ui_factory=>get_popups( ).
lo_class_descr ?= cl_abap_classdescr=>describe_by_object_ref( lo_popups ).
cl_abap_unit_assert=>assert_equals(
exp = '\CLASS-POOL=ZCL_ABAPGIT_UI_INJECTOR\CLASS=LTD_ABAPGIT_POPUPS_MOCK'
act = lo_class_descr->absolute_name ).
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_UI_INJECTOR</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>abapGit UI injector</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,161 @@
INTERFACE zif_abapgit_popups
PUBLIC .
TYPES:
BEGIN OF ty_popup,
url TYPE string,
package TYPE devclass,
branch_name TYPE string,
cancel TYPE abap_bool,
END OF ty_popup .
CONSTANTS:
c_new_branch_label TYPE string VALUE '+ create new ...' ##NO_TEXT.
METHODS:
popup_package_export
EXPORTING
ev_package TYPE devclass
ev_folder_logic TYPE string
RAISING
zcx_abapgit_exception,
popup_folder_logic
RETURNING
VALUE(rv_folder_logic) TYPE string
RAISING
zcx_abapgit_exception,
popup_object
RETURNING
VALUE(rs_tadir) TYPE tadir
RAISING
zcx_abapgit_exception,
create_branch_popup
EXPORTING
ev_name TYPE string
ev_cancel TYPE abap_bool
RAISING
zcx_abapgit_exception,
run_page_class_popup
EXPORTING
ev_name TYPE string
ev_cancel TYPE abap_bool
RAISING
zcx_abapgit_exception,
repo_new_offline
RETURNING
VALUE(rs_popup) TYPE zif_abapgit_popups=>ty_popup
RAISING
zcx_abapgit_exception,
branch_list_popup
IMPORTING
iv_url TYPE string
iv_default_branch TYPE string OPTIONAL
iv_show_new_option TYPE abap_bool OPTIONAL
RETURNING
VALUE(rs_branch) TYPE zif_abapgit_definitions=>ty_git_branch
RAISING
zcx_abapgit_exception,
repo_popup
IMPORTING
iv_url TYPE string
iv_package TYPE devclass OPTIONAL
iv_branch TYPE string DEFAULT 'refs/heads/master'
iv_freeze_package TYPE abap_bool OPTIONAL
iv_freeze_url TYPE abap_bool OPTIONAL
iv_title TYPE clike DEFAULT 'Clone repository ...'
RETURNING
VALUE(rs_popup) TYPE zif_abapgit_popups=>ty_popup
RAISING
zcx_abapgit_exception ##NO_TEXT,
popup_to_confirm
IMPORTING
titlebar TYPE clike
text_question TYPE clike
text_button_1 TYPE clike DEFAULT 'Yes'
icon_button_1 TYPE icon-name DEFAULT space
text_button_2 TYPE clike DEFAULT 'No'
icon_button_2 TYPE icon-name DEFAULT space
default_button TYPE char1 DEFAULT '1'
display_cancel_button TYPE char1 DEFAULT abap_true
RETURNING
VALUE(rv_answer) TYPE char1
RAISING
zcx_abapgit_exception,
popup_to_inform
IMPORTING
titlebar TYPE clike
text_message TYPE clike
RAISING
zcx_abapgit_exception,
popup_to_create_package
EXPORTING
es_package_data TYPE scompkdtln
ev_create TYPE boolean
RAISING
zcx_abapgit_exception,
popup_to_create_transp_branch
IMPORTING
it_transport_headers TYPE trwbo_request_headers
RETURNING
VALUE(rs_transport_branch) TYPE zif_abapgit_definitions=>ty_transport_to_branch
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel,
popup_to_select_transports
RETURNING
VALUE(rt_trkorr) TYPE trwbo_request_headers,
popup_to_select_from_list
IMPORTING
it_list TYPE STANDARD TABLE
i_header_text TYPE csequence
i_select_column_text TYPE csequence
it_columns_to_display TYPE stringtab
EXPORTING
VALUE(et_list) TYPE STANDARD TABLE
RAISING
zcx_abapgit_cancel
zcx_abapgit_exception,
branch_popup_callback
IMPORTING
iv_code TYPE clike
CHANGING
ct_fields TYPE zif_abapgit_definitions=>ty_sval_tt
cs_error TYPE svale
cv_show_popup TYPE char01
RAISING
zcx_abapgit_exception,
package_popup_callback
IMPORTING
iv_code TYPE clike
CHANGING
ct_fields TYPE zif_abapgit_definitions=>ty_sval_tt
cs_error TYPE svale
cv_show_popup TYPE char01
RAISING
zcx_abapgit_exception,
popup_transport_request
IMPORTING
is_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
RETURNING
VALUE(rv_transport) TYPE trkorr
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
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_POPUPS</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>abapGit popups</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -64,7 +64,7 @@ FORM branch_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt
DATA: lx_error TYPE REF TO zcx_abapgit_exception.
TRY.
zcl_abapgit_popups=>branch_popup_callback(
zcl_abapgit_ui_factory=>get_popups( )->branch_popup_callback(
EXPORTING
iv_code = pv_code
CHANGING
@ -88,7 +88,7 @@ FORM package_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt
DATA: lx_error TYPE REF TO zcx_abapgit_exception.
TRY.
zcl_abapgit_popups=>package_popup_callback(
zcl_abapgit_ui_factory=>get_popups( )->package_popup_callback(
EXPORTING
iv_code = pv_code
CHANGING

View File

@ -152,7 +152,7 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
lt_trkorr TYPE trwbo_request_headers.
lt_trkorr = zcl_abapgit_popups=>popup_to_select_transports( ).
lt_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_transports( ).
IF lines( lt_trkorr ) = 0.
RETURN.
ENDIF.
@ -172,7 +172,7 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
ls_data-package = lv_package.
ls_data-dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ).
ls_data-dot_abapgit-folder_logic = zcl_abapgit_popups=>popup_folder_logic( ).
ls_data-dot_abapgit-folder_logic = zcl_abapgit_ui_factory=>get_popups( )->popup_folder_logic( ).
CREATE OBJECT lo_repo
EXPORTING

View File

@ -119,7 +119,7 @@ CLASS zcl_abapgit_zip IMPLEMENTATION.
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files.
ls_tadir = zcl_abapgit_popups=>popup_object( ).
ls_tadir = zcl_abapgit_ui_factory=>get_popups( )->popup_object( ).
IF ls_tadir IS INITIAL.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
@ -205,7 +205,7 @@ CLASS zcl_abapgit_zip IMPLEMENTATION.
ls_data-key = 'DUMMY'.
ls_data-dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ).
zcl_abapgit_popups=>popup_package_export(
zcl_abapgit_ui_factory=>get_popups( )->popup_package_export(
IMPORTING
ev_package = ls_data-package
ev_folder_logic = ls_data-dot_abapgit-folder_logic ).