How to know when a refresh of a materialized view has been completed
You you have said-


  After a specific event(e.g. someone add new data into the database via a GUI), I need to refresh a materialized view that aggregates some data and only after that refresh is complete I have to query from the MW and to show in the GUI the updated results...


You may use ON COMMIT refresh instead of ON DEMAND BUT I just said may be, not sure about your requirement and implementation.


  ON COMMIT Refresh
  
  A materialized view can be refreshed automatically using the ON COMMIT method. Therefore, whenever a transaction commits which has updated the tables on which a materialized view is defined, those changes are automatically reflected in the materialized view. The advantage of using this approach is you never have to remember to refresh the materialized view.


The following query can be used to know when the MV was last refreshed. 

SQL&gt; alter session set nls_date_format='dd/mm/yy hh24:mi:ss';
SQL&gt; select owner, mview_name, last_refresh_type, last_refresh_date
    from all_mviews;


Sample output:

USERNAME         M_VIEW_TEST        COMPLETE   02/02/17 01:01:19


You can also use v$mvrefresh dynamic performance view to know which MV is being refresh.

select currmvowner, currmvname from v$mvrefresh;


References:
ALL_MVIEWS
ON COMMIT Refresh