diff --git a/src/ui/zcl_abapgit_gui_view_tutorial.clas.abap b/src/ui/zcl_abapgit_gui_view_tutorial.clas.abap index d4121bbe0..ecea37a28 100644 --- a/src/ui/zcl_abapgit_gui_view_tutorial.clas.abap +++ b/src/ui/zcl_abapgit_gui_view_tutorial.clas.abap @@ -19,6 +19,8 @@ CLASS ZCL_ABAPGIT_GUI_VIEW_TUTORIAL IMPLEMENTATION. METHOD render_content. + DATA: lv_devclass TYPE tadir-devclass. + CREATE OBJECT ro_html. ro_html->add( '

Tutorial

' ). @@ -54,14 +56,17 @@ CLASS ZCL_ABAPGIT_GUI_VIEW_TUTORIAL IMPLEMENTATION. ro_html->add( '

abapGit repository

' ). ro_html->add( '

' ). diff --git a/src/ui/zcl_abapgit_services_abapgit.clas.abap b/src/ui/zcl_abapgit_services_abapgit.clas.abap index e70e0b12d..47a15bd51 100644 --- a/src/ui/zcl_abapgit_services_abapgit.clas.abap +++ b/src/ui/zcl_abapgit_services_abapgit.clas.abap @@ -23,11 +23,11 @@ CLASS zcl_abapgit_services_abapgit DEFINITION zcx_abapgit_cancel . CLASS-METHODS is_installed RETURNING - VALUE(rv_installed) TYPE abap_bool . + VALUE(rv_devclass) TYPE tadir-devclass . CLASS-METHODS prepare_gui_startup RAISING - zcx_abapgit_exception. - + zcx_abapgit_exception . + PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS do_install IMPORTING iv_title TYPE c @@ -50,7 +50,7 @@ ENDCLASS. -CLASS zcl_abapgit_services_abapgit IMPLEMENTATION. +CLASS ZCL_ABAPGIT_SERVICES_ABAPGIT IMPLEMENTATION. METHOD do_install. @@ -92,16 +92,76 @@ CLASS zcl_abapgit_services_abapgit IMPLEMENTATION. ENDMETHOD. + METHOD get_package_from_adt. + + DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, + lr_context TYPE REF TO data, + lt_fields TYPE tihttpnvp. + + + FIELD-SYMBOLS: TYPE any, + TYPE string, + LIKE LINE OF lt_fields. + + ls_item-obj_type = 'CLAS'. + ls_item-obj_name = 'CL_ADT_GUI_INTEGRATION_CONTEXT'. + + IF zcl_abapgit_objects=>exists( ls_item ) = abap_false. + " ADT is not supported in this NW release + RETURN. + ENDIF. + + TRY. + CREATE DATA lr_context TYPE ('CL_ADT_GUI_INTEGRATION_CONTEXT=>TY_CONTEXT_INFO'). + + ASSIGN lr_context->* TO . + ASSERT sy-subrc = 0. + + CALL METHOD ('CL_ADT_GUI_INTEGRATION_CONTEXT')=>read_context + RECEIVING + result = . + + ASSIGN COMPONENT 'PARAMETERS' + OF STRUCTURE + TO . + ASSERT sy-subrc = 0. + + lt_fields = cl_http_utility=>string_to_fields( + cl_http_utility=>unescape_url( + ) ). + + READ TABLE lt_fields ASSIGNING + WITH KEY name = 'p_package_name'. + IF sy-subrc = 0. + rv_package = -value. + + " We want to open the repo just once. Therefore we delete the parameters + " and initialize the ADT context. + CLEAR . + CALL METHOD ('CL_ADT_GUI_INTEGRATION_CONTEXT')=>initialize_instance + EXPORTING + context_info = . + + ENDIF. + + CATCH cx_root. + " Some problems with dynamic ADT access. + " Let's ignore it for now and fail silently + ENDTRY. + + ENDMETHOD. + + METHOD install_abapgit. CONSTANTS lc_title TYPE c LENGTH 40 VALUE 'Install abapGit'. DATA lv_text TYPE c LENGTH 100. - IF is_installed( ) = abap_true. + IF NOT is_installed( ) IS INITIAL. lv_text = 'Seems like abapGit package is already installed. No changes to be done'. zcl_abapgit_ui_factory=>get_popups( )->popup_to_inform( - iv_titlebar = lc_title - iv_text_message = lv_text ). + iv_titlebar = lc_title + iv_text_message = lv_text ). RETURN. ENDIF. @@ -114,16 +174,15 @@ CLASS zcl_abapgit_services_abapgit IMPLEMENTATION. ENDMETHOD. + METHOD is_installed. - DATA: ls_item TYPE zif_abapgit_definitions=>ty_item. - - ls_item-obj_type = 'TRAN'. - ls_item-obj_name = c_abapgit_tcode. - rv_installed = zcl_abapgit_objects=>exists( ls_item ). + SELECT SINGLE devclass FROM tadir INTO rv_devclass + WHERE object = 'TRAN' AND obj_name = c_abapgit_tcode. ENDMETHOD. + METHOD open_abapgit_homepage. cl_gui_frontend_services=>execute( @@ -147,6 +206,7 @@ CLASS zcl_abapgit_services_abapgit IMPLEMENTATION. ENDMETHOD. + METHOD prepare_gui_startup. DATA: lv_repo_key TYPE zif_abapgit_persistence=>ty_value, @@ -234,65 +294,4 @@ CLASS zcl_abapgit_services_abapgit IMPLEMENTATION. ENDIF. ENDMETHOD. - - - METHOD get_package_from_adt. - - DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, - lr_context TYPE REF TO data, - lt_fields TYPE tihttpnvp. - - - FIELD-SYMBOLS: TYPE any, - TYPE string, - LIKE LINE OF lt_fields. - - ls_item-obj_type = 'CLAS'. - ls_item-obj_name = 'CL_ADT_GUI_INTEGRATION_CONTEXT'. - - IF zcl_abapgit_objects=>exists( ls_item ) = abap_false. - " ADT is not supported in this NW release - RETURN. - ENDIF. - - TRY. - CREATE DATA lr_context TYPE ('CL_ADT_GUI_INTEGRATION_CONTEXT=>TY_CONTEXT_INFO'). - - ASSIGN lr_context->* TO . - ASSERT sy-subrc = 0. - - CALL METHOD ('CL_ADT_GUI_INTEGRATION_CONTEXT')=>read_context - RECEIVING - result = . - - ASSIGN COMPONENT 'PARAMETERS' - OF STRUCTURE - TO . - ASSERT sy-subrc = 0. - - lt_fields = cl_http_utility=>string_to_fields( - cl_http_utility=>unescape_url( - ) ). - - READ TABLE lt_fields ASSIGNING - WITH KEY name = 'p_package_name'. - IF sy-subrc = 0. - rv_package = -value. - - " We want to open the repo just once. Therefore we delete the parameters - " and initialize the ADT context. - CLEAR . - CALL METHOD ('CL_ADT_GUI_INTEGRATION_CONTEXT')=>initialize_instance - EXPORTING - context_info = . - - ENDIF. - - CATCH cx_root. - " Some problems with dynamic ADT access. - " Let's ignore it for now and fail silently - ENDTRY. - - ENDMETHOD. - ENDCLASS.