Merge pull request #473 from sbcgua/master

Tutorial component, drilldown to package
This commit is contained in:
Lars Hvam 2016-11-28 14:59:22 +01:00 committed by GitHub
commit 17e3402872
11 changed files with 196 additions and 35 deletions

View File

@ -171,6 +171,7 @@ CONSTANTS: BEGIN OF gc_action,
repo_toggle_fav TYPE string VALUE 'repo_toggle_fav',
abapgit_home TYPE string VALUE 'abapgit_home',
abapgit_wiki TYPE string VALUE 'abapgit_wiki',
abapgit_install TYPE string VALUE 'abapgit_install',
zip_import TYPE string VALUE 'zip_import',
@ -203,6 +204,8 @@ CONSTANTS: BEGIN OF gc_action,
go_branch_overview TYPE string VALUE 'go_branch_overview',
go_playground TYPE string VALUE 'go_playground',
go_debuginfo TYPE string VALUE 'go_debuginfo',
go_settings type string value 'go_settings',
go_settings TYPE STRING VALUE 'go_settings',
go_tutorial TYPE STRING VALUE 'go_tutorial',
jump TYPE string VALUE 'jump',
jump_pkg TYPE string VALUE 'jump_pkg',
END OF gc_action.

View File

@ -13,6 +13,7 @@ INCLUDE zabapgit_repo_browser_util.
* Components and templates
INCLUDE zabapgit_view_repo.
INCLUDE zabapgit_view_tutorial.
* Pages
INCLUDE zabapgit_page_commit.

View File

@ -96,15 +96,22 @@ CLASS lcl_gui_router IMPLEMENTATION.
WHEN gc_action-go_playground. " Create playground page
ei_page = get_page_playground( ).
ev_state = gc_event_state-new_page.
WHEN gc_action-go_tutorial. " Go to tutorial
lcl_app=>user( )->set_repo_show( '' ). " Clear show_id
ev_state = gc_event_state-re_render. " Assume we are on main page
" SAP GUI actions
WHEN gc_action-jump.
WHEN gc_action-jump. " Open object editor
lcl_html_action_utils=>jump_decode( EXPORTING iv_string = iv_getdata
IMPORTING ev_obj_type = ls_item-obj_type
ev_obj_name = ls_item-obj_name ).
lcl_objects=>jump( ls_item ).
ev_state = gc_event_state-no_more_act.
WHEN gc_action-jump_pkg. " Open SE80
lcl_services_repo=>open_se80( |{ iv_getdata }| ).
ev_state = gc_event_state-no_more_act.
" DB actions
WHEN gc_action-db_display OR gc_action-db_edit. " DB Display/Edit
ei_page = get_page_db_by_name( iv_name = iv_action iv_getdata = iv_getdata ).
@ -125,6 +132,9 @@ CLASS lcl_gui_router IMPLEMENTATION.
WHEN gc_action-abapgit_home. " Go abapGit homepage
lcl_services_abapgit=>open_abapgit_homepage( ).
ev_state = gc_event_state-no_more_act.
WHEN gc_action-abapgit_wiki. " Go abapGit wikipage
lcl_services_abapgit=>open_abapgit_wikipage( ).
ev_state = gc_event_state-no_more_act.
WHEN gc_action-abapgit_install. " Install abapGit
lcl_services_abapgit=>install_abapgit( ).
ev_state = gc_event_state-re_render.

View File

@ -137,7 +137,10 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
IF iv_show_package = abap_true.
ro_html->add( '<img src="img/pkg">' ).
ro_html->add( |<span>{ io_repo->get_package( ) }</span>| ).
ro_html->add( '<span>' ).
ro_html->add_anchor( iv_txt = io_repo->get_package( )
iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ).
ro_html->add( '</span>' ).
ENDIF.
ro_html->add( '</td>' ).

View File

@ -6,10 +6,9 @@ CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super
PUBLIC SECTION.
METHODS lif_gui_page~render REDEFINITION.
PRIVATE SECTION.
METHODS scripts
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
PRIVATE SECTION.
METHODS render_debug_info
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_supported_object_types

View File

@ -116,6 +116,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt,
lx_error TYPE REF TO lcx_exception,
lo_tutorial TYPE REF TO lcl_gui_view_tutorial,
lo_repo LIKE LINE OF lt_repos.
retrieve_active_repo( ). " Get and validate key of user default repo
@ -136,10 +137,15 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
IF lines( lt_repos ) = 0 AND lx_error IS INITIAL.
ro_html->add( render_explore( ) ).
ELSE.
IF mv_show IS INITIAL.
CREATE OBJECT lo_tutorial.
ro_html->add( lo_tutorial->lif_gui_page~render( ) ).
ELSE.
lo_repo = lcl_app=>repo_srv( )->get( mv_show ).
ro_html->add( render_repo( lo_repo ) ).
ENDIF.
ENDIF.
ro_html->add( footer( ) ).
@ -165,15 +171,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
lo_repo = lcl_app=>repo_srv( )->get( mv_show ).
CATCH lcx_exception.
CLEAR mv_show.
ENDTRY.
ENDIF.
IF mv_show IS INITIAL. " Fall back to first available repo
READ TABLE lt_repos INTO lo_repo INDEX 1.
IF sy-subrc = 0.
mv_show = lo_repo->get_key( ).
lcl_app=>user( )->set_repo_show( mv_show ).
ENDIF.
ENDTRY.
ENDIF.
IF lv_show_old <> mv_show AND NOT mv_show IS INITIAL.
@ -186,20 +185,25 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
METHOD build_main_menu.
DATA lo_betasub TYPE REF TO lcl_html_toolbar.
DATA: lo_advsub TYPE REF TO lcl_html_toolbar,
lo_helpsub TYPE REF TO lcl_html_toolbar.
CREATE OBJECT ro_menu.
CREATE OBJECT lo_betasub.
CREATE OBJECT lo_advsub.
CREATE OBJECT lo_helpsub.
lo_betasub->add( iv_txt = 'Database util' iv_act = gc_action-go_db ) ##NO_TEXT.
lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT.
lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT.
lo_betasub->add( iv_txt = 'Object to files' iv_act = gc_action-zip_object ) ##NO_TEXT.
lo_betasub->add( iv_txt = 'Test changed by' iv_act = c_actions-changed_by ) ##NO_TEXT.
lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT.
lo_betasub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT.
lo_betasub->add( iv_txt = 'Settings' iv_act = gc_action-go_settings ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Database util' iv_act = gc_action-go_db ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Object to files' iv_act = gc_action-zip_object ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Test changed by' iv_act = c_actions-changed_by ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT.
lo_advsub->add( iv_txt = 'Settings' iv_act = gc_action-go_settings ) ##NO_TEXT.
lo_helpsub->add( iv_txt = 'Tutorial' iv_act = gc_action-go_tutorial ) ##NO_TEXT.
lo_helpsub->add( iv_txt = 'abapGit wiki' iv_act = gc_action-abapgit_wiki ) ##NO_TEXT.
ro_menu->add( iv_txt = 'Clone' iv_act = gc_action-repo_clone ) ##NO_TEXT.
ro_menu->add( iv_txt = 'Explore' iv_act = gc_action-go_explore ) ##NO_TEXT.
@ -207,7 +211,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
IF lcl_services_abapgit=>needs_installation( ) = abap_true.
ro_menu->add( iv_txt = 'Get abapGit' iv_act = gc_action-abapgit_install ) ##NO_TEXT.
ENDIF.
ro_menu->add( iv_txt = 'Advanced' io_sub = lo_betasub ) ##NO_TEXT.
ro_menu->add( iv_txt = 'Advanced' io_sub = lo_advsub ) ##NO_TEXT.
ro_menu->add( iv_txt = 'Help' io_sub = lo_helpsub ) ##NO_TEXT.
ENDMETHOD. "build main_menu
@ -285,9 +290,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
IF lo_favbar->count( ) > 0.
ro_html->add( lo_favbar->render( iv_sort = abap_true ) ).
ELSE.
ro_html->add( '<span class="grey">No favorites found. Please'
&& ' click <img src="img/star-grey"> icon repo toolbar to add'
&& ' it as favourite. Choose a repo there &#x2192;</span>' ).
ro_html->add( `<span class="grey">No favorites so far. For more info please check ` ).
ro_html->add_anchor( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial ).
ro_html->add( '</span>' ).
ENDIF.
ro_html->add( '</td>' ).

View File

@ -3,14 +3,22 @@
*&---------------------------------------------------------------------*
CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
METHODS lif_gui_page~render REDEFINITION.
METHODS lif_gui_page~on_event REDEFINITION.
CONSTANTS:
BEGIN OF c_action,
save_settings TYPE string VALUE 'save_settings',
END OF c_action.
PRIVATE SECTION.
DATA:
mo_settings TYPE REF TO lcl_settings,
mv_error TYPE abap_bool.
METHODS render_proxy
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_development_internals
@ -32,14 +40,13 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
RAISING
lcx_exception.
METHODS read_settings.
DATA:
mo_settings TYPE REF TO lcl_settings,
mv_error TYPE abap_bool.
ENDCLASS.
CLASS lcl_gui_page_settings IMPLEMENTATION.
METHOD lif_gui_page~render.
CREATE OBJECT ro_html.
read_settings( ).
@ -52,10 +59,15 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
ro_html->add( |<hr>| ).
ro_html->add( render_development_internals( ) ).
ro_html->add( render_form_end( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
METHOD render_proxy.
CREATE OBJECT ro_html.
ro_html->add( |<h2>Proxy</h2>| ).
ro_html->add( |<label for="proxy_url">Proxy URL</label>| ).
ro_html->add( |<br>| ).
@ -66,11 +78,14 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
ro_html->add( `<input name="proxy_port" type="text" size="5" value="` && mo_settings->get_proxy_port( ) && `">` ).
ro_html->add( |<br>| ).
ro_html->add( |<br>| ).
ENDMETHOD.
METHOD lif_gui_page~on_event.
DATA:
lt_post_fields TYPE tihttpnvp.
CASE iv_action.
WHEN c_action-save_settings.
lt_post_fields = parse_post( it_postdata ).
@ -86,10 +101,12 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
ev_state = gc_event_state-go_back.
ENDCASE.
ENDMETHOD.
METHOD build_settings.
DATA ls_post_field TYPE ihttpnvp.
CREATE OBJECT mo_settings.
@ -111,22 +128,27 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
ELSE.
mo_settings->set_run_critical_tests( abap_false ).
ENDIF.
ENDMETHOD.
METHOD validate_settings.
IF ( mo_settings->get_proxy_url( ) IS NOT INITIAL AND mo_settings->get_proxy_port( ) IS INITIAL ) OR
( mo_settings->get_proxy_url( ) IS INITIAL AND mo_settings->get_proxy_port( ) IS NOT INITIAL ).
MESSAGE 'If specifying proxy, specify both URL and port' TYPE 'W'.
ENDIF.
ENDMETHOD.
METHOD parse_post.
DATA lv_serialized_post_data TYPE string.
CONCATENATE LINES OF it_postdata INTO lv_serialized_post_data.
rt_post_fields = cl_http_utility=>if_http_utility~string_to_fields( lv_serialized_post_data ).
ENDMETHOD.
@ -141,36 +163,47 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
ENDMETHOD.
METHOD render_form_begin.
CREATE OBJECT ro_html.
ro_html->add( '<div class="settings_container">' ).
ro_html->add( `<form id="settings_form" method="post" action="sapevent:` && c_action-save_settings && `">` ).
ENDMETHOD.
METHOD render_form_end.
CREATE OBJECT ro_html.
ro_html->add( '<input type="submit" value="Save" class="submit">' ).
ro_html->add( '</form>' ).
ro_html->add( '</div>' ).
ENDMETHOD.
METHOD read_settings.
DATA lo_settings_persistence TYPE REF TO lcl_persistence_settings.
lo_settings_persistence = lcl_app=>settings( ).
mo_settings = lo_settings_persistence->read( ).
ENDMETHOD.
METHOD render_development_internals.
DATA lv_checked TYPE string.
IF mo_settings->get_run_critical_tests( ) = abap_true.
lv_checked = 'checked'.
ENDIF.
CREATE OBJECT ro_html.
ro_html->add( |<h2>abapGit Development Internals settings</h2>| ).
ro_html->add( `<input type="checkbox" name="critical_tests" value="X" `
&& lv_checked && ` > Enable critical unit tests (see LTCL_DANGEROUS)` ).
ro_html->add( |<br>| ).
ro_html->add( |<br>| ).
ENDMETHOD.
ENDCLASS.

View File

@ -6,6 +6,7 @@ CLASS lcl_services_abapgit DEFINITION FINAL.
PUBLIC SECTION.
CONSTANTS c_abapgit_homepage TYPE string VALUE 'http://www.abapgit.org' ##NO_TEXT.
CONSTANTS c_abapgit_wikipage TYPE string VALUE 'https://github.com/larshp/abapGit/wiki'.
CONSTANTS c_package_abapgit TYPE devclass VALUE '$ABAPGIT'.
CONSTANTS c_package_plugins TYPE devclass VALUE '$ABAPGIT_PLUGINS'.
CONSTANTS c_abapgit_url TYPE string VALUE 'https://github.com/larshp/abapGit.git'.
@ -14,6 +15,9 @@ CLASS lcl_services_abapgit DEFINITION FINAL.
CLASS-METHODS open_abapgit_homepage
RAISING lcx_exception.
CLASS-METHODS open_abapgit_wikipage
RAISING lcx_exception.
CLASS-METHODS install_abapgit
RAISING lcx_exception lcx_cancel.
@ -35,6 +39,17 @@ CLASS lcl_services_abapgit IMPLEMENTATION.
ENDMETHOD. "open_abapgit_homepage
METHOD open_abapgit_wikipage.
cl_gui_frontend_services=>execute(
EXPORTING document = c_abapgit_wikipage
EXCEPTIONS OTHERS = 1 ).
IF sy-subrc <> 0.
lcx_exception=>raise( 'Opening page in external browser failed.' ).
ENDIF.
ENDMETHOD. "open_abapgit_wikipage
METHOD install_abapgit.
DATA lv_text TYPE c LENGTH 100.

View File

@ -43,6 +43,10 @@ CLASS lcl_services_repo DEFINITION FINAL.
IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception.
CLASS-METHODS open_se80
IMPORTING iv_package TYPE devclass
RAISING lcx_exception.
ENDCLASS. "lcl_services_repo
CLASS lcl_services_repo IMPLEMENTATION.
@ -296,4 +300,16 @@ CLASS lcl_services_repo IMPLEMENTATION.
ENDMETHOD. " toggle_favorite.
METHOD open_se80.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
OPERATION = 'SHOW'
IN_NEW_WINDOW = 'X'
OBJECT_NAME = iv_package
OBJECT_TYPE = 'DEVC'
WITH_OBJECTLIST = 'X'.
ENDMETHOD. " open_se80.
ENDCLASS. "lcl_services_repo

View File

@ -0,0 +1,28 @@
*&---------------------------------------------------------------------*
*& Include ZABAPGIT_PAGE_TUTORIAL
*&---------------------------------------------------------------------*
CLASS lcl_gui_view_tutorial DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
METHODS lif_gui_page~render REDEFINITION.
PRIVATE SECTION.
ENDCLASS. "lcl_gui_view_tutorial
CLASS lcl_gui_view_tutorial IMPLEMENTATION.
METHOD lif_gui_page~render.
CREATE OBJECT ro_html.
ro_html->add( '<div class="repo">' ).
ro_html->add( '<b>Tutorial</b><br>' ).
ro_html->add( 'To add a repo as favorite'
&& ' click <img src="img/star-grey"> icon at repo toolbar.<br>' ).
ro_html->add( 'To choose a repo press <img src="img/burger"> at the favorite bar.<br>' ).
ro_html->add( '</div>' ).
ENDMETHOD. "lif_gui_page~render
ENDCLASS. "lcl_gui_view_tutorial

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>ZABAPGIT_VIEW_TUTORIAL</NAME>
<STATE>A</STATE>
<SQLX/>
<EDTX/>
<VARCL>X</VARCL>
<DBAPL/>
<DBNA/>
<CLAS/>
<TYPE/>
<OCCURS/>
<SUBC>I</SUBC>
<APPL/>
<SECU/>
<CNAM/>
<CDAT>0000-00-00</CDAT>
<UNAM/>
<UDAT>0000-00-00</UDAT>
<VERN/>
<LEVL/>
<RSTAT/>
<RMAND/>
<RLOAD>E</RLOAD>
<FIXPT/>
<SSET/>
<SDATE>0000-00-00</SDATE>
<STIME/>
<IDATE>0000-00-00</IDATE>
<ITIME/>
<LDBNAME/>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<KEY/>
<ENTRY>Include ZABAPGIT_PAGE_TUTORIAL</ENTRY>
<LENGTH>30</LENGTH>
<SPLIT/>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>