mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 13:03:01 +08:00
Hotkey overview
After this commit is applied one can open the hotkey overview with '?'.
This commit is contained in:
parent
d25bfaf725
commit
5c2a646809
|
@ -39,6 +39,12 @@ CLASS zcl_abapgit_gui_chunk_lib DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||||
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html
|
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS render_hotkey_overview
|
||||||
|
RETURNING
|
||||||
|
VALUE(ro_html) TYPE REF TO zcl_abapgit_html
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,6 +98,65 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
|
||||||
ENDMETHOD. "render_error
|
ENDMETHOD. "render_error
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_hotkey_overview.
|
||||||
|
|
||||||
|
DATA: lv_display TYPE string,
|
||||||
|
lt_hotkeys TYPE zif_abapgit_definitions=>tty_hotkey,
|
||||||
|
lt_actions TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action,
|
||||||
|
lo_settings TYPE REF TO zcl_abapgit_settings.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_hotkey> TYPE zif_abapgit_definitions=>ty_hotkey,
|
||||||
|
<ls_action> LIKE LINE OF lt_actions.
|
||||||
|
|
||||||
|
lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
|
||||||
|
|
||||||
|
lt_hotkeys = lo_settings->get_hotkeys( ).
|
||||||
|
|
||||||
|
lt_actions = zcl_abapgit_hotkeys=>get_default_hotkeys_from_pages( ).
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
|
lv_display = 'display:none'.
|
||||||
|
|
||||||
|
ro_html->add( |<div id="hotkeys" class="news" style="{ lv_display }">| ).
|
||||||
|
|
||||||
|
ro_html->add( '<div class="headbar title">Hotkeys'
|
||||||
|
&& '<div class="float-right">'
|
||||||
|
&& zcl_abapgit_html=>a(
|
||||||
|
iv_txt = '❌'
|
||||||
|
iv_typ = zif_abapgit_definitions=>gc_action_type-onclick
|
||||||
|
iv_act = 'displayNews()'
|
||||||
|
iv_class = 'close-btn' )
|
||||||
|
&& '</div></div>' ).
|
||||||
|
|
||||||
|
" Generate hotkeys
|
||||||
|
ro_html->add( |<div class="newslist">| ).
|
||||||
|
|
||||||
|
ro_html->add( '<table>' ).
|
||||||
|
|
||||||
|
LOOP AT lt_hotkeys ASSIGNING <ls_hotkey>.
|
||||||
|
|
||||||
|
READ TABLE lt_actions ASSIGNING <ls_action>
|
||||||
|
WITH TABLE KEY action
|
||||||
|
COMPONENTS action = <ls_hotkey>-action.
|
||||||
|
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
ro_html->add( '<tr>' ).
|
||||||
|
ro_html->add( |<td>{ <ls_hotkey>-sequence }</td><td>-</td><td>{ <ls_action>-name }</td>| ).
|
||||||
|
ro_html->add( '</tr>' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ro_html->add( '</table>' ).
|
||||||
|
|
||||||
|
ro_html->add( '</div>' ).
|
||||||
|
|
||||||
|
ro_html->add( '</div>' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD render_item_state.
|
METHOD render_item_state.
|
||||||
|
|
||||||
DATA: lv_system TYPE string.
|
DATA: lv_system TYPE string.
|
||||||
|
|
|
@ -41,13 +41,17 @@ CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT CREATE PUBLIC.
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
METHODS hotkeys
|
METHODS add_hotkeys
|
||||||
IMPORTING
|
IMPORTING
|
||||||
io_html TYPE REF TO zcl_abapgit_html.
|
io_html TYPE REF TO zcl_abapgit_html
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
METHODS get_relevant_hotkeys
|
METHODS render_hotkey_overview
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_hotkeys) TYPE zif_abapgit_definitions=>tty_hotkey.
|
VALUE(ro_html) TYPE REF TO zcl_abapgit_html
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -75,6 +79,34 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION.
|
||||||
ENDMETHOD. "footer
|
ENDMETHOD. "footer
|
||||||
|
|
||||||
|
|
||||||
|
METHOD add_hotkeys.
|
||||||
|
|
||||||
|
DATA: lv_json TYPE string,
|
||||||
|
lt_hotkeys TYPE zif_abapgit_definitions=>tty_hotkey.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_hotkey> TYPE zif_abapgit_definitions=>ty_hotkey.
|
||||||
|
|
||||||
|
lt_hotkeys = zcl_abapgit_hotkeys=>get_relevant_hotkeys_for_page( me ).
|
||||||
|
|
||||||
|
lv_json = `{`.
|
||||||
|
|
||||||
|
LOOP AT lt_hotkeys ASSIGNING <ls_hotkey>.
|
||||||
|
|
||||||
|
IF sy-tabix > 1.
|
||||||
|
lv_json = lv_json && |,|.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_json = lv_json && | "{ <ls_hotkey>-sequence }" : "{ <ls_hotkey>-action }" |.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
lv_json = lv_json && `}`.
|
||||||
|
|
||||||
|
io_html->add( |setKeyBindings({ lv_json });| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD html_head.
|
METHOD html_head.
|
||||||
|
|
||||||
CREATE OBJECT ro_html.
|
CREATE OBJECT ro_html.
|
||||||
|
@ -95,6 +127,29 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION.
|
||||||
ENDMETHOD. "html_head
|
ENDMETHOD. "html_head
|
||||||
|
|
||||||
|
|
||||||
|
METHOD link_hints.
|
||||||
|
|
||||||
|
DATA: lo_settings TYPE REF TO zcl_abapgit_settings,
|
||||||
|
lv_link_hint_key TYPE char01,
|
||||||
|
lv_background_color TYPE string.
|
||||||
|
|
||||||
|
lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
|
||||||
|
|
||||||
|
lv_link_hint_key = lo_settings->get_link_hint_key( ).
|
||||||
|
lv_background_color = lo_settings->get_link_hint_background_color( ).
|
||||||
|
|
||||||
|
IF lo_settings->get_link_hints_enabled( ) = abap_true
|
||||||
|
AND lv_link_hint_key IS NOT INITIAL.
|
||||||
|
|
||||||
|
io_html->add( |setLinkHints("{ lv_link_hint_key }","{ lv_background_color }");| ).
|
||||||
|
io_html->add( |setInitialFocusWithQuerySelector('a span', true);| ).
|
||||||
|
io_html->add( |enableArrowListNavigation();| ).
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD redirect.
|
METHOD redirect.
|
||||||
|
|
||||||
CREATE OBJECT ro_html.
|
CREATE OBJECT ro_html.
|
||||||
|
@ -110,12 +165,20 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_hotkey_overview.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
|
ro_html->add( zcl_abapgit_gui_chunk_lib=>render_hotkey_overview( ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD scripts.
|
METHOD scripts.
|
||||||
|
|
||||||
CREATE OBJECT ro_html.
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
link_hints( ro_html ).
|
link_hints( ro_html ).
|
||||||
hotkeys( ro_html ).
|
add_hotkeys( ro_html ).
|
||||||
|
|
||||||
ENDMETHOD. "scripts
|
ENDMETHOD. "scripts
|
||||||
|
|
||||||
|
@ -172,6 +235,7 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION.
|
||||||
ro_html->add( html_head( ) ).
|
ro_html->add( html_head( ) ).
|
||||||
ro_html->add( '<body>' ). "#EC NOTEXT
|
ro_html->add( '<body>' ). "#EC NOTEXT
|
||||||
ro_html->add( title( ) ).
|
ro_html->add( title( ) ).
|
||||||
|
ro_html->add( render_hotkey_overview( ) ).
|
||||||
ro_html->add( render_content( ) ).
|
ro_html->add( render_content( ) ).
|
||||||
ro_html->add( footer( ) ).
|
ro_html->add( footer( ) ).
|
||||||
ro_html->add( '</body>' ). "#EC NOTEXT
|
ro_html->add( '</body>' ). "#EC NOTEXT
|
||||||
|
@ -188,115 +252,4 @@ CLASS zcl_abapgit_gui_page IMPLEMENTATION.
|
||||||
ro_html->add( '</html>' ). "#EC NOTEXT
|
ro_html->add( '</html>' ). "#EC NOTEXT
|
||||||
|
|
||||||
ENDMETHOD. " lif_gui_page~render.
|
ENDMETHOD. " lif_gui_page~render.
|
||||||
|
|
||||||
METHOD link_hints.
|
|
||||||
|
|
||||||
DATA: lo_settings TYPE REF TO zcl_abapgit_settings,
|
|
||||||
lv_link_hint_key TYPE char01,
|
|
||||||
lv_background_color TYPE string.
|
|
||||||
|
|
||||||
lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
|
|
||||||
|
|
||||||
lv_link_hint_key = lo_settings->get_link_hint_key( ).
|
|
||||||
lv_background_color = lo_settings->get_link_hint_background_color( ).
|
|
||||||
|
|
||||||
IF lo_settings->get_link_hints_enabled( ) = abap_true
|
|
||||||
AND lv_link_hint_key IS NOT INITIAL.
|
|
||||||
|
|
||||||
io_html->add( |setLinkHints("{ lv_link_hint_key }","{ lv_background_color }");| ).
|
|
||||||
io_html->add( |setInitialFocusWithQuerySelector('a span', true);| ).
|
|
||||||
io_html->add( |enableArrowListNavigation();| ).
|
|
||||||
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD hotkeys.
|
|
||||||
|
|
||||||
DATA: lv_json TYPE string,
|
|
||||||
lt_hotkeys TYPE zif_abapgit_definitions=>tty_hotkey.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_hotkey> TYPE zif_abapgit_definitions=>ty_hotkey.
|
|
||||||
|
|
||||||
lt_hotkeys = get_relevant_hotkeys( ).
|
|
||||||
|
|
||||||
IF lines( lt_hotkeys ) = 0.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
lv_json = `{`.
|
|
||||||
|
|
||||||
LOOP AT lt_hotkeys ASSIGNING <ls_hotkey>.
|
|
||||||
|
|
||||||
IF sy-tabix > 1.
|
|
||||||
lv_json = lv_json && |,|.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
lv_json = lv_json && | "{ <ls_hotkey>-sequence }" : "{ <ls_hotkey>-action }" |.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
lv_json = lv_json && `}`.
|
|
||||||
|
|
||||||
io_html->add( |setKeyBindings({ lv_json });| ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD get_relevant_hotkeys.
|
|
||||||
|
|
||||||
DATA: lo_settings TYPE REF TO zcl_abapgit_settings,
|
|
||||||
lv_class_name TYPE abap_abstypename,
|
|
||||||
lt_hotkey_actions_of_curr_page TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action,
|
|
||||||
lv_save_tabix TYPE syst-tabix,
|
|
||||||
ls_hotkey LIKE LINE OF rt_hotkeys.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_hotkey> TYPE zif_abapgit_definitions=>ty_hotkey,
|
|
||||||
<ls_hotkey_of_curr_page> TYPE zif_abapgit_gui_page_hotkey=>ty_hotkey_action.
|
|
||||||
|
|
||||||
lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
|
|
||||||
|
|
||||||
rt_hotkeys = lo_settings->get_hotkeys( ).
|
|
||||||
|
|
||||||
lv_class_name = cl_abap_classdescr=>get_class_name( me ).
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
CALL METHOD (lv_class_name)=>zif_abapgit_gui_page_hotkey~get_hotkey_actions
|
|
||||||
RECEIVING
|
|
||||||
rt_hotkey_actions = lt_hotkey_actions_of_curr_page.
|
|
||||||
|
|
||||||
CATCH cx_root.
|
|
||||||
RETURN.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
IF lines( rt_hotkeys ) = 0.
|
|
||||||
" when no use defined hotkeys exist, we use the default
|
|
||||||
LOOP AT lt_hotkey_actions_of_curr_page ASSIGNING <ls_hotkey_of_curr_page>.
|
|
||||||
|
|
||||||
ls_hotkey-action = <ls_hotkey_of_curr_page>-action.
|
|
||||||
ls_hotkey-sequence = <ls_hotkey_of_curr_page>-default_hotkey.
|
|
||||||
INSERT ls_hotkey INTO TABLE rt_hotkeys.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ELSE.
|
|
||||||
|
|
||||||
LOOP AT rt_hotkeys ASSIGNING <ls_hotkey>.
|
|
||||||
|
|
||||||
lv_save_tabix = sy-tabix.
|
|
||||||
|
|
||||||
READ TABLE lt_hotkey_actions_of_curr_page TRANSPORTING NO FIELDS
|
|
||||||
WITH KEY action = <ls_hotkey>-action.
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
" We only offer hotkeys which are supported by the current page
|
|
||||||
DELETE rt_hotkeys INDEX lv_save_tabix.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -74,11 +74,7 @@ CLASS zcl_abapgit_gui_page_settings DEFINITION
|
||||||
VALUE(rt_hotkey_actions) TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action
|
VALUE(rt_hotkey_actions) TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
METHODS get_hotkey_actions_from_pages
|
|
||||||
RETURNING
|
|
||||||
VALUE(rt_hotkey_actions) TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception.
|
|
||||||
METHODS get_default_hotkeys
|
METHODS get_default_hotkeys
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_default_hotkeys) TYPE zif_abapgit_definitions=>tty_hotkey
|
VALUE(rt_default_hotkeys) TYPE zif_abapgit_definitions=>tty_hotkey
|
||||||
|
@ -234,7 +230,7 @@ CLASS zcl_abapgit_gui_page_settings IMPLEMENTATION.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_action> LIKE LINE OF lt_actions.
|
FIELD-SYMBOLS: <ls_action> LIKE LINE OF lt_actions.
|
||||||
|
|
||||||
lt_actions = get_hotkey_actions_from_pages( ).
|
lt_actions = zcl_abapgit_hotkeys=>get_default_hotkeys_from_pages( ).
|
||||||
|
|
||||||
LOOP AT lt_actions ASSIGNING <ls_action>.
|
LOOP AT lt_actions ASSIGNING <ls_action>.
|
||||||
ls_hotkey-action = <ls_action>-action.
|
ls_hotkey-action = <ls_action>-action.
|
||||||
|
@ -245,48 +241,14 @@ CLASS zcl_abapgit_gui_page_settings IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_hotkey_actions_from_pages.
|
|
||||||
|
|
||||||
DATA: lt_hotkey_actions TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action,
|
|
||||||
lo_interface TYPE REF TO cl_oo_interface,
|
|
||||||
lt_classes TYPE seo_relkeys.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_class> TYPE seorelkey.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
lo_interface ?= cl_oo_class=>get_instance( |ZIF_ABAPGIT_GUI_PAGE_HOTKEY| ).
|
|
||||||
|
|
||||||
CATCH cx_class_not_existent.
|
|
||||||
" hotkeys are only available with installed abapGit repository
|
|
||||||
RETURN.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
lt_classes = lo_interface->get_implementing_classes( ).
|
|
||||||
|
|
||||||
LOOP AT lt_classes ASSIGNING <ls_class>.
|
|
||||||
|
|
||||||
CALL METHOD (<ls_class>-clsname)=>zif_abapgit_gui_page_hotkey~get_hotkey_actions
|
|
||||||
RECEIVING
|
|
||||||
rt_hotkey_actions = lt_hotkey_actions.
|
|
||||||
|
|
||||||
INSERT LINES OF lt_hotkey_actions INTO TABLE rt_hotkey_actions.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD get_possible_hotkey_actions.
|
METHOD get_possible_hotkey_actions.
|
||||||
|
|
||||||
DATA: ls_hotkey_action LIKE LINE OF rt_hotkey_actions.
|
DATA: ls_hotkey_action LIKE LINE OF rt_hotkey_actions.
|
||||||
|
|
||||||
rt_hotkey_actions = get_hotkey_actions_from_pages( ).
|
rt_hotkey_actions = zcl_abapgit_hotkeys=>get_default_hotkeys_from_pages( ).
|
||||||
|
|
||||||
" insert empty row at the beginning, so that we can unset a hotkey
|
" insert empty row at the beginning, so that we can unset a hotkey
|
||||||
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
INSERT ls_hotkey_action INTO rt_hotkey_actions INDEX 1.
|
||||||
|
|
||||||
SORT rt_hotkey_actions.
|
|
||||||
DELETE ADJACENT DUPLICATES FROM rt_hotkey_actions.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
102
src/ui/zcl_abapgit_hotkeys.clas.abap
Normal file
102
src/ui/zcl_abapgit_hotkeys.clas.abap
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
CLASS zcl_abapgit_hotkeys DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
CLASS-METHODS:
|
||||||
|
get_default_hotkeys_from_pages
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_hotkey_actions) TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception,
|
||||||
|
|
||||||
|
get_relevant_hotkeys_for_page
|
||||||
|
IMPORTING
|
||||||
|
io_page TYPE REF TO zcl_abapgit_gui_page
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_hotkeys) TYPE zif_abapgit_definitions=>tty_hotkey
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS zcl_abapgit_hotkeys IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD get_default_hotkeys_from_pages.
|
||||||
|
|
||||||
|
DATA: lt_hotkey_actions TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action,
|
||||||
|
lo_interface TYPE REF TO cl_oo_interface,
|
||||||
|
lt_classes TYPE seo_relkeys.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_class> TYPE seorelkey.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_interface ?= cl_oo_class=>get_instance( |ZIF_ABAPGIT_GUI_PAGE_HOTKEY| ).
|
||||||
|
|
||||||
|
CATCH cx_class_not_existent.
|
||||||
|
" hotkeys are only available with installed abapGit repository
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
lt_classes = lo_interface->get_implementing_classes( ).
|
||||||
|
|
||||||
|
LOOP AT lt_classes ASSIGNING <ls_class>.
|
||||||
|
|
||||||
|
CALL METHOD (<ls_class>-clsname)=>zif_abapgit_gui_page_hotkey~get_hotkey_actions
|
||||||
|
RECEIVING
|
||||||
|
rt_hotkey_actions = lt_hotkey_actions.
|
||||||
|
|
||||||
|
INSERT LINES OF lt_hotkey_actions INTO TABLE rt_hotkey_actions.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
SORT rt_hotkey_actions.
|
||||||
|
DELETE ADJACENT DUPLICATES FROM rt_hotkey_actions.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_relevant_hotkeys_for_page.
|
||||||
|
|
||||||
|
DATA: lo_settings TYPE REF TO zcl_abapgit_settings,
|
||||||
|
lv_class_name TYPE abap_abstypename,
|
||||||
|
lt_hotkey_actions_of_curr_page TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action,
|
||||||
|
lv_save_tabix TYPE syst-tabix.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_hotkey> TYPE zif_abapgit_definitions=>ty_hotkey.
|
||||||
|
|
||||||
|
lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
|
||||||
|
|
||||||
|
rt_hotkeys = lo_settings->get_hotkeys( ).
|
||||||
|
|
||||||
|
lv_class_name = cl_abap_classdescr=>get_class_name( io_page ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CALL METHOD (lv_class_name)=>zif_abapgit_gui_page_hotkey~get_hotkey_actions
|
||||||
|
RECEIVING
|
||||||
|
rt_hotkey_actions = lt_hotkey_actions_of_curr_page.
|
||||||
|
|
||||||
|
CATCH cx_root.
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
LOOP AT rt_hotkeys ASSIGNING <ls_hotkey>.
|
||||||
|
|
||||||
|
lv_save_tabix = sy-tabix.
|
||||||
|
|
||||||
|
READ TABLE lt_hotkey_actions_of_curr_page TRANSPORTING NO FIELDS
|
||||||
|
WITH TABLE KEY action
|
||||||
|
COMPONENTS action = <ls_hotkey>-action.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
" We only offer hotkeys which are supported by the current page
|
||||||
|
DELETE rt_hotkeys INDEX lv_save_tabix.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
19
src/ui/zcl_abapgit_hotkeys.clas.xml
Normal file
19
src/ui/zcl_abapgit_hotkeys.clas.xml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?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_HOTKEYS</CLSNAME>
|
||||||
|
<VERSION>1</VERSION>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit hotkeys</DESCRIPT>
|
||||||
|
<EXPOSURE>2</EXPOSURE>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSFINAL>X</CLSFINAL>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -830,6 +830,10 @@ div.news .update {
|
||||||
background-color: #f5c538;
|
background-color: #f5c538;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.newslist td {
|
||||||
|
padding-right: 1em
|
||||||
|
}
|
||||||
|
|
||||||
/* Tooltip text */
|
/* Tooltip text */
|
||||||
.tooltiptext {
|
.tooltiptext {
|
||||||
line-height: 15px;
|
line-height: 15px;
|
||||||
|
|
|
@ -821,7 +821,7 @@ function setLinkHints(sLinkHintKey, sColor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function Hotkeys(oKeyMap){
|
function Hotkeys(oKeyMap){
|
||||||
this.oKeyMap = oKeyMap;
|
this.oKeyMap = oKeyMap || {};
|
||||||
}
|
}
|
||||||
|
|
||||||
Hotkeys.prototype.getSapEvent = function(sSapEvent) {
|
Hotkeys.prototype.getSapEvent = function(sSapEvent) {
|
||||||
|
@ -862,6 +862,12 @@ Hotkeys.prototype.onkeydown = function(oEvent){
|
||||||
submitSapeventForm({}, sSapEvent, "post");
|
submitSapeventForm({}, sSapEvent, "post");
|
||||||
oEvent.preventDefault();
|
oEvent.preventDefault();
|
||||||
}
|
}
|
||||||
|
} else if (sKey === "?" ) {
|
||||||
|
var elHotkeys = document.querySelector('#hotkeys');
|
||||||
|
|
||||||
|
if (elHotkeys) {
|
||||||
|
elHotkeys.style.display = (elHotkeys.style.display) ? '' : 'none';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,9 @@ CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
|
||||||
it_hotkeys TYPE zif_abapgit_definitions=>tty_hotkey,
|
it_hotkeys TYPE zif_abapgit_definitions=>tty_hotkey,
|
||||||
get_hotkeys
|
get_hotkeys
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_hotkeys) TYPE zif_abapgit_definitions=>tty_hotkey.
|
VALUE(rt_hotkeys) TYPE zif_abapgit_definitions=>tty_hotkey
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
TYPES: BEGIN OF ty_s_settings,
|
TYPES: BEGIN OF ty_s_settings,
|
||||||
|
@ -348,7 +350,31 @@ CLASS zcl_abapgit_settings IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD get_hotkeys.
|
METHOD get_hotkeys.
|
||||||
|
|
||||||
|
DATA: lt_default_hotkeys TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_action,
|
||||||
|
ls_hotkey LIKE LINE OF rt_hotkeys.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_default_hotkey> LIKE LINE OF lt_default_hotkeys.
|
||||||
|
|
||||||
|
IF lines( ms_user_settings-hotkeys ) > 0.
|
||||||
|
|
||||||
rt_hotkeys = ms_user_settings-hotkeys.
|
rt_hotkeys = ms_user_settings-hotkeys.
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
|
||||||
|
" provide default hotkeys
|
||||||
|
lt_default_hotkeys = zcl_abapgit_hotkeys=>get_default_hotkeys_from_pages( ).
|
||||||
|
|
||||||
|
LOOP AT lt_default_hotkeys ASSIGNING <ls_default_hotkey>.
|
||||||
|
|
||||||
|
ls_hotkey-action = <ls_default_hotkey>-action.
|
||||||
|
ls_hotkey-sequence = <ls_default_hotkey>-default_hotkey.
|
||||||
|
INSERT ls_hotkey INTO TABLE rt_hotkeys.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -8,7 +8,9 @@ INTERFACE zif_abapgit_gui_page_hotkey
|
||||||
default_hotkey TYPE string,
|
default_hotkey TYPE string,
|
||||||
END OF ty_hotkey_action,
|
END OF ty_hotkey_action,
|
||||||
tty_hotkey_action TYPE STANDARD TABLE OF ty_hotkey_action
|
tty_hotkey_action TYPE STANDARD TABLE OF ty_hotkey_action
|
||||||
WITH NON-UNIQUE DEFAULT KEY.
|
WITH NON-UNIQUE DEFAULT KEY
|
||||||
|
WITH NON-UNIQUE SORTED KEY action
|
||||||
|
COMPONENTS action.
|
||||||
|
|
||||||
CLASS-METHODS
|
CLASS-METHODS
|
||||||
get_hotkey_actions
|
get_hotkey_actions
|
||||||
|
|
Loading…
Reference in New Issue
Block a user