anchor.diff:            mv_show_order_by    TYPE abap_bool,
             mv_order_by         TYPE string,
             mv_order_descending TYPE abap_bool,
  -          mv_diff_first       TYPE abap_bool.
  +          mv_diff_first       TYPE abap_bool,
  +          mv_key TYPE zif_abapgit_persistence=>ty_value.
   
       METHODS:
         render_head_line
  
positive.code:     DATA: lo_tb_advanced TYPE REF TO zcl_abapgit_html_toolbar,
            lo_tb_branch   TYPE REF TO zcl_abapgit_html_toolbar,
            lo_tb_tag      TYPE REF TO zcl_abapgit_html_toolbar,
            lv_key         TYPE zif_abapgit_persistence=>ty_value,
            lv_wp_opt      LIKE zif_abapgit_html=>c_html_opt-crossout,
            lv_crossout    LIKE zif_abapgit_html=>c_html_opt-crossout,
            lv_pull_opt    LIKE zif_abapgit_html=>c_html_opt-crossout,
            li_log         TYPE REF TO zif_abapgit_log.
  
      CREATE OBJECT ro_toolbar EXPORTING iv_id = 'toolbar-repo'.
      CREATE OBJECT lo_tb_branch.
      CREATE OBJECT lo_tb_advanced.
      CREATE OBJECT lo_tb_tag.
  
      lv_key = mo_repo->get_key( ).
  
      IF mo_repo->get_local_settings( )-write_protected = abap_true.
        lv_wp_opt   = zif_abapgit_html=>c_html_opt-crossout.
  
negative.code:       render_order_by
          RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html,
        apply_order_by
          CHANGING ct_repo_items TYPE zif_abapgit_definitions=>tt_repo_items,
        build_branch_dropdown
          IMPORTING iv_wp_opt                 LIKE zif_abapgit_html=>c_html_opt-crossout
          RETURNING VALUE(ro_branch_dropdown) TYPE REF TO zcl_abapgit_html_toolbar
          RAISING   zcx_abapgit_exception,
        build_tag_dropdown
          IMPORTING iv_wp_opt              LIKE zif_abapgit_html=>c_html_opt-crossout
          RETURNING VALUE(ro_tag_dropdown) TYPE REF TO zcl_abapgit_html_toolbar
          RAISING   zcx_abapgit_exception,
        build_advanced_dropdown
          IMPORTING iv_wp_opt                   LIKE zif_abapgit_html=>c_html_opt-crossout
                    iv_lstate                   TYPE char1
                    iv_rstate                   TYPE char1
          RETURNING VALUE(ro_advanced_dropdown) TYPE REF TO zcl_abapgit_html_toolbar
          RAISING   zcx_abapgit_exception,
        build_main_toolbar
          IMPORTING iv_pull_opt       LIKE zif_abapgit_html=>c_html_opt-crossout
                    iv_lstate         TYPE char1
                    iv_rstate         TYPE char1
                    io_tb_branch      TYPE REF TO zcl_abapgit_html_toolbar
                    io_tb_tag         TYPE REF TO zcl_abapgit_html_toolbar
                    io_tb_advanced    TYPE REF TO zcl_abapgit_html_toolbar
          RETURNING VALUE(ro_toolbar) TYPE REF TO zcl_abapgit_html_toolbar
          RAISING   zcx_abapgit_exception.
  
  ENDCLASS.
  
  
  
  CLASS zcl_abapgit_gui_view_repo IMPLEMENTATION.
  
  
    METHOD build_advanced_dropdown.
  
      DATA:
        lv_crossout LIKE zif_abapgit_html=>c_html_opt-crossout.
  
      CREATE OBJECT ro_advanced_dropdown.
  
      IF iv_rstate IS NOT INITIAL OR iv_lstate IS NOT INITIAL. " In case of asyncronicities
        ro_advanced_dropdown->add( iv_txt = 'Reset local'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-git_reset }?{ mv_key }|
                                   iv_opt = iv_wp_opt ).
      ENDIF.
  
      IF mo_repo->is_offline( ) = abap_false. " Online ?
        ro_advanced_dropdown->add( iv_txt = 'Background mode'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-go_background }?{ mv_key }| ).
        ro_advanced_dropdown->add( iv_txt = 'Change remote'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-repo_remote_change }?{ mv_key }| ).
        ro_advanced_dropdown->add( iv_txt = 'Make off-line'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-repo_remote_detach }?{ mv_key }| ).
        ro_advanced_dropdown->add( iv_txt = 'Force stage'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-go_stage }?{ mv_key }| ).
  
        CLEAR lv_crossout.
        IF zcl_abapgit_auth=>is_allowed( zif_abapgit_auth=>gc_authorization-transport_to_branch ) = abap_false.
          lv_crossout = zif_abapgit_html=>c_html_opt-crossout.
        ENDIF.
        ro_advanced_dropdown->add( iv_txt = 'Transport to Branch'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-repo_transport_to_branch }?{ mv_key }|
                                   iv_opt = lv_crossout ).
  
      ELSE.
        ro_advanced_dropdown->add( iv_txt = 'Make on-line'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-repo_remote_attach }?{ mv_key }| ).
      ENDIF.
  
      ro_advanced_dropdown->add( iv_txt = 'Syntax Check'
                                 iv_act = |{ zif_abapgit_definitions=>c_action-repo_syntax_check }?{ mv_key }| ).
      ro_advanced_dropdown->add( iv_txt = 'Run Code Inspector'
                                 iv_act = |{ zif_abapgit_definitions=>c_action-repo_code_inspector }?{ mv_key }| ).
      ro_advanced_dropdown->add( iv_txt = 'Repo settings'
                                 iv_act = |{ zif_abapgit_definitions=>c_action-repo_settings }?{ mv_key }| ).
  
      CLEAR lv_crossout.
      IF zcl_abapgit_auth=>is_allowed( zif_abapgit_auth=>gc_authorization-update_local_checksum ) = abap_false.
        lv_crossout = zif_abapgit_html=>c_html_opt-crossout.
      ENDIF.
      ro_advanced_dropdown->add( iv_txt = 'Update local checksums'
                                 iv_act = |{ zif_abapgit_definitions=>c_action-repo_refresh_checksums }?{ mv_key }|
                                 iv_opt = lv_crossout ).
  
      IF mo_repo->get_dot_abapgit( )->get_master_language( ) <> sy-langu.
        ro_advanced_dropdown->add( iv_txt = 'Open in master language'
                                   iv_act = |{ zif_abapgit_definitions=>c_action-repo_open_in_master_lang }?{ mv_key }| ).
      ENDIF.
  
      ro_advanced_dropdown->add( iv_txt = 'Remove'
                                 iv_act = |{ zif_abapgit_definitions=>c_action-repo_remove }?{ mv_key }| ).
  
      CLEAR lv_crossout.
      IF mo_repo->get_local_settings( )-write_protected = abap_true
          OR zcl_abapgit_auth=>is_allowed( zif_abapgit_auth=>gc_authorization-uninstall ) = abap_false.
        lv_crossout = zif_abapgit_html=>c_html_opt-crossout.
      ENDIF.
      ro_advanced_dropdown->add( iv_txt = 'Uninstall'
                                 iv_act = |{ zif_abapgit_definitions=>c_action-repo_purge }?{ mv_key }|
                                 iv_opt = lv_crossout ).
  
    ENDMETHOD.
  
  
    METHOD build_branch_dropdown.
  
      CREATE OBJECT ro_branch_dropdown.
  
      IF mo_repo->is_offline( ) = abap_true.
        RETURN.
      ENDIF.
  
      ro_branch_dropdown->add( iv_txt = 'Overview'
                               iv_act = |{ zif_abapgit_definitions=>c_action-go_branch_overview }?{ mv_key }| ).
      ro_branch_dropdown->add( iv_txt = 'Switch'
                               iv_act = |{ zif_abapgit_definitions=>c_action-git_branch_switch }?{ mv_key }|
                               iv_opt = iv_wp_opt ).
      ro_branch_dropdown->add( iv_txt = 'Create'
                               iv_act = |{ zif_abapgit_definitions=>c_action-git_branch_create }?{ mv_key }| ).
      ro_branch_dropdown->add( iv_txt = 'Delete'
                               iv_act = |{ zif_abapgit_definitions=>c_action-git_branch_delete }?{ mv_key }| ).
  
    ENDMETHOD.
  
  
    METHOD build_dir_jump_link.
  