mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Remember last used folder (#6677)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
ada2314fae
commit
d1e96e9952
|
@ -13,10 +13,6 @@ CLASS lcl_gui DEFINITION FINAL.
|
|||
CLASS-METHODS select_tr_requests
|
||||
RETURNING
|
||||
VALUE(rt_trkorr) TYPE trwbo_request_headers.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA gv_last_folder TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_gui IMPLEMENTATION.
|
||||
|
@ -32,13 +28,9 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
lo_fe_serv->directory_browse(
|
||||
EXPORTING
|
||||
iv_window_title = lv_title
|
||||
iv_initial_folder = gv_last_folder
|
||||
CHANGING
|
||||
cv_selected_folder = rv_folder ).
|
||||
|
||||
"Store the last directory for user friendly UI
|
||||
gv_last_folder = rv_folder.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD open_folder_frontend.
|
||||
|
|
|
@ -2,12 +2,20 @@ CLASS zcl_abapgit_frontend_services DEFINITION
|
|||
PUBLIC
|
||||
CREATE PRIVATE
|
||||
GLOBAL FRIENDS zcl_abapgit_ui_factory.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_frontend_services.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-DATA gv_initial_folder TYPE string.
|
||||
|
||||
METHODS get_path_from_fullname
|
||||
IMPORTING
|
||||
iv_fullname TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_path) TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -15,6 +23,23 @@ ENDCLASS.
|
|||
CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_path_from_fullname.
|
||||
|
||||
DATA lv_len TYPE i.
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX '^/(.*/)?' IN iv_fullname MATCH LENGTH lv_len.
|
||||
IF sy-subrc = 0.
|
||||
rv_path = iv_fullname(lv_len).
|
||||
ELSE.
|
||||
FIND FIRST OCCURRENCE OF REGEX '^(.*\\)?' IN iv_fullname MATCH LENGTH lv_len.
|
||||
IF sy-subrc = 0.
|
||||
rv_path = iv_fullname(lv_len).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_frontend_services~clipboard_export.
|
||||
|
||||
DATA lv_rc TYPE i.
|
||||
|
@ -63,10 +88,14 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_frontend_services~directory_browse.
|
||||
|
||||
IF iv_initial_folder IS NOT INITIAL.
|
||||
gv_initial_folder = iv_initial_folder.
|
||||
ENDIF.
|
||||
|
||||
cl_gui_frontend_services=>directory_browse(
|
||||
EXPORTING
|
||||
window_title = iv_window_title
|
||||
initial_folder = iv_initial_folder
|
||||
initial_folder = gv_initial_folder
|
||||
CHANGING
|
||||
selected_folder = cv_selected_folder
|
||||
EXCEPTIONS
|
||||
|
@ -78,6 +107,8 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
|
||||
gv_initial_folder = cv_selected_folder.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -392,6 +423,7 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
|
|||
window_title = iv_title
|
||||
default_filename = iv_default_filename
|
||||
file_filter = lv_filter
|
||||
initial_directory = gv_initial_folder
|
||||
CHANGING
|
||||
file_table = lt_file_table
|
||||
rc = lv_rc
|
||||
|
@ -413,6 +445,8 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
|
|||
ASSERT sy-subrc = 0.
|
||||
rv_path = ls_file_table-filename.
|
||||
|
||||
gv_initial_folder = get_path_from_fullname( rv_path ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -434,6 +468,7 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
|
|||
default_extension = iv_extension
|
||||
default_file_name = iv_default_filename
|
||||
file_filter = lv_filter
|
||||
initial_directory = gv_initial_folder
|
||||
CHANGING
|
||||
filename = lv_filename
|
||||
path = lv_path
|
||||
|
@ -451,5 +486,7 @@ CLASS zcl_abapgit_frontend_services IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'Cancelled' ).
|
||||
ENDIF.
|
||||
|
||||
gv_initial_folder = lv_path.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
41
src/ui/zcl_abapgit_frontend_services.clas.testclasses.abap
Normal file
41
src/ui/zcl_abapgit_frontend_services.clas.testclasses.abap
Normal file
|
@ -0,0 +1,41 @@
|
|||
CLASS ltcl_frontend_services DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
||||
DURATION SHORT FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO zcl_abapgit_frontend_services.
|
||||
|
||||
METHODS:
|
||||
setup,
|
||||
path_windows FOR TESTING,
|
||||
path_unix FOR TESTING,
|
||||
no_path FOR TESTING.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_abapgit_frontend_services DEFINITION LOCAL FRIENDS ltcl_frontend_services.
|
||||
|
||||
CLASS ltcl_frontend_services IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_cut.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD path_windows.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->get_path_from_fullname( 'C:\SAPworkdir\hello\world.abap' )
|
||||
exp = 'C:\SAPworkdir\hello\' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD path_unix.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->get_path_from_fullname( '/var/tmp/world.abap' )
|
||||
exp = '/var/tmp/' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD no_path.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->get_path_from_fullname( 'toronto.abap' )
|
||||
exp = '' ).
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -50,8 +50,6 @@ CLASS zcl_abapgit_zip DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
PROTECTED SECTION.
|
||||
|
||||
CLASS-DATA gv_prev TYPE string .
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-METHODS filename
|
||||
|
@ -169,16 +167,11 @@ CLASS zcl_abapgit_zip IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
lo_frontend_serv = zcl_abapgit_ui_factory=>get_frontend_services( ).
|
||||
lo_frontend_serv->directory_browse(
|
||||
EXPORTING
|
||||
iv_initial_folder = gv_prev
|
||||
CHANGING
|
||||
cv_selected_folder = lv_folder ).
|
||||
lo_frontend_serv->directory_browse( CHANGING cv_selected_folder = lv_folder ).
|
||||
IF lv_folder IS INITIAL.
|
||||
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
|
||||
ENDIF.
|
||||
|
||||
gv_prev = lv_folder.
|
||||
lo_frontend_serv->get_file_separator( CHANGING cv_file_separator = lv_sep ).
|
||||
|
||||
LOOP AT ls_files_item-files ASSIGNING <ls_file>.
|
||||
|
|
Loading…
Reference in New Issue
Block a user