abapGit/src/ui/zcl_abapgit_frontend_services.clas.abap
Marc Bernard aa71ed52ae
Set filter for file open and save dialogs / Add new setting for default commit comment (#3371)
* Set filter for file open and save dialogs

Set the file filter dropdown and default to *.ZIP in file open and save dialogs

* Add new setting for default commit comment

New abapGit setting to define a default for the comment used for commits. Object and/or filename can added to the comment automatically, which works similar to GitHub if a single file is changed. If multiple objects are changed, then object/file count is included in the default for the comment.

* Update CLAS ZCL_ABAPGIT_GUI_PAGE_COMMIT

* Fix text for $object

Fixed case when one object with multiple files was changed

* Pretty print

Co-authored-by: Lars Hvam <larshp@hotmail.com>
2020-05-20 12:37:58 +02:00

189 lines
5.4 KiB
ABAP

CLASS zcl_abapgit_frontend_services DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES zif_abapgit_frontend_services.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_ABAPGIT_FRONTEND_SERVICES IMPLEMENTATION.
METHOD zif_abapgit_frontend_services~file_download.
DATA:
lt_rawdata TYPE solix_tab.
lt_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstr ).
cl_gui_frontend_services=>gui_download(
EXPORTING
bin_filesize = xstrlen( iv_xstr )
filename = iv_path
filetype = 'BIN'
CHANGING
data_tab = lt_rawdata
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from gui_download' ). "#EC NOTEXT
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_frontend_services~file_upload.
TYPES: ty_hex TYPE x LENGTH 255.
DATA: lt_data TYPE TABLE OF ty_hex WITH DEFAULT KEY,
lv_length TYPE i.
cl_gui_frontend_services=>gui_upload(
EXPORTING
filename = iv_path
filetype = 'BIN'
IMPORTING
filelength = lv_length
CHANGING
data_tab = lt_data
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
CONCATENATE LINES OF lt_data INTO rv_xstr IN BYTE MODE.
rv_xstr = rv_xstr(lv_length).
ENDMETHOD.
METHOD zif_abapgit_frontend_services~show_file_open_dialog.
DATA:
lt_file_table TYPE filetable,
ls_file_table LIKE LINE OF lt_file_table,
lv_filter TYPE string,
lv_action TYPE i,
lv_rc TYPE i.
IF iv_extension = 'zip'.
lv_filter = 'ZIP Files (*.ZIP)|*.ZIP|' && cl_gui_frontend_services=>filetype_all.
ENDIF.
cl_gui_frontend_services=>file_open_dialog(
EXPORTING
window_title = iv_title
default_filename = iv_default_filename
file_filter = lv_filter
CHANGING
file_table = lt_file_table
rc = lv_rc
user_action = lv_action
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from file_open_dialog' ). "#EC NOTEXT
ENDIF.
IF lv_action = cl_gui_frontend_services=>action_cancel.
zcx_abapgit_exception=>raise( 'cancelled' ). "#EC NOTEXT
ENDIF.
READ TABLE lt_file_table INDEX 1 INTO ls_file_table.
ASSERT sy-subrc = 0.
rv_path = ls_file_table-filename.
ENDMETHOD.
METHOD zif_abapgit_frontend_services~show_file_save_dialog.
DATA:
lv_action TYPE i,
lv_filter TYPE string,
lv_filename TYPE string,
lv_path TYPE string.
IF iv_extension = 'zip'.
lv_filter = 'ZIP Files (*.ZIP)|*.ZIP|' && cl_gui_frontend_services=>filetype_all.
ENDIF.
cl_gui_frontend_services=>file_save_dialog(
EXPORTING
window_title = iv_title
default_extension = iv_extension
default_file_name = iv_default_filename
file_filter = lv_filter
CHANGING
filename = lv_filename
path = lv_path
fullpath = rv_path
user_action = lv_action
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from file_save_dialog' ). "#EC NOTEXT
ENDIF.
IF lv_action = cl_gui_frontend_services=>action_cancel.
zcx_abapgit_exception=>raise( 'cancelled' ). "#EC NOTEXT
ENDIF.
ENDMETHOD.
ENDCLASS.