Samples / Controls / sap.f

Grid List with GridBoxLayout

This layout allows to display same height grid items with configurable width.

Class
z2ui5_cl_smpc_app_144
Repository
abap2UI5/samples-controls
Ports
sap.f.sample.GridListBoxContainer
UI5 libraries
sap.f, sap.m, sap.ui.core, sap.ui.layout
Lowest UI5 release
1.71
In the browser
Runs in the playground
Controls it builds
sap.f.GridList, sap.f.GridListItem, sap.m.FlexItemData, sap.m.Label, sap.m.Panel, sap.m.Slider, sap.m.Title, sap.m.Toolbar, sap.m.VBox, sap.ui.core.mvc.View, sap.ui.layout.cssgrid.GridBoxLayout

The class

" @keywords gridlist grid list sap.f gridboxlayout slider panel toolbar title gridlistitem vbox flexitemdata
" @summary This layout allows to display same height grid items with configurable width.
" @origin sap.f.sample.GridListBoxContainer - https://sdk.openui5.org/entity/sap.f.GridList/sample/sap.f.sample.GridListBoxContainer (status: reviewed - read against the original, not run)
CLASS z2ui5_cl_smpc_app_144 DEFINITION PUBLIC.

  PUBLIC SECTION.
    INTERFACES z2ui5_if_app.

    TYPES:
      BEGIN OF ty_item,
        title    TYPE string,
        subtitle TYPE string,
      END OF ty_item.
    DATA t_items      TYPE STANDARD TABLE OF ty_item WITH EMPTY KEY.
    DATA slider_value TYPE i.
    DATA panel_width  TYPE string.

  PROTECTED SECTION.
    DATA client TYPE REF TO z2ui5_if_client.

    METHODS view_display.
    METHODS on_event.
    METHODS model_init.

  PRIVATE SECTION.
ENDCLASS.


CLASS z2ui5_cl_smpc_app_144 IMPLEMENTATION.

  METHOD z2ui5_if_app~main.

    me->client = client.
    IF client->check_on_init( ).
      model_init( ).
      view_display( ).
    ELSEIF client->check_on_navigated( ).
      view_display( ).
    ELSEIF client->check_on_event( ).
      on_event( ).
    ENDIF.

  ENDMETHOD.


  METHOD view_display.

    DATA(view) = z2ui5_cl_ui5_view_builder=>factory( ).

    view->ele( n = `View` ns = `mvc`
        )->a( n = `xmlns`      v = `sap.m`
        )->a( n = `xmlns:mvc`  v = `sap.ui.core.mvc`
        )->a( n = `xmlns:grid` v = `sap.ui.layout.cssgrid`
        )->a( n = `xmlns:f`    v = `sap.f`

        )->tag( `Slider`
            )->a( n = `value`      v = client->_bind( slider_value )
            )->a( n = `liveChange` v = client->_event( val = `SLIDER` s_ctrl = VALUE #( check_queue_last = abap_true check_no_busy = abap_true ) )

        )->ele( `Panel`
            )->a( n = `id`               v = `panelForGridList`
            )->a( n = `backgroundDesign` v = `Transparent`
            )->a( n = `width`            v = client->_bind( panel_width )

            )->ele( `headerToolbar`
                )->ele( `Toolbar`
                    )->a( n = `height` v = `3rem`
                    )->tag( `Title`
                        )->a( n = `text` v = `Grid List with GridBoxLayout and minWidth 17rem`

                )->end(
            )->end(

            )->ele( n = `GridList` ns = `f`
                )->a( n = `id`         v = `gridList`
                )->a( n = `headerText` v = `GridList header`
                )->a( n = `items`      v = client->_bind( t_items )

                )->ele( n = `customLayout` ns = `f`
                    )->tag( n = `GridBoxLayout` ns = `grid`
                        )->a( n = `boxMinWidth` v = `17rem`

                )->end(

                )->ele( n = `GridListItem` ns = `f`
                    )->ele( `VBox`
                        )->a( n = `class` v = `sapUiSmallMargin`
                        )->ele( `layoutData`
                            )->tag( `FlexItemData`
                                )->a( n = `growFactor`   v = `1`
                                )->a( n = `shrinkFactor` v = `0`

                        )->end(
                        )->tag( `Title`
                            )->a( n = `text`     v = `{TITLE}`
                            )->a( n = `wrapping` v = `true`
                        )->tag( `Label`
                            )->a( n = `text`     v = `{SUBTITLE}`
                            )->a( n = `wrapping` v = `true` ).

    client->view_display( view->stringify( ) ).

  ENDMETHOD.


  METHOD on_event.

    IF client->get_event( ) = `SLIDER`.
      " original onSliderMoved: byId('panelForGridList').setWidth(value + '%')
      panel_width = |{ slider_value }%|.
    ENDIF.

  ENDMETHOD.


  METHOD model_init.

    slider_value = 100.
    panel_width  = `100%`.
    t_items = VALUE #(
      ( title = `Grid item title 1`                                                                                                                               subtitle = `Subtitle 1` )
      ( title = `Grid item title 2`                                                                                                                               subtitle = `Subtitle 2` )
      ( title = `Grid item title 3`                                                                                                                               subtitle = `Subtitle 3` )
      ( title = `Grid item title 4`                                                                                                                               subtitle = `Subtitle 4` )
      ( title = `Grid item title 5`                                                                                                                               subtitle = `Subtitle 5` )
      ( title = `Grid item title 6 Grid item title Grid item title Grid item title Grid item title Grid item title`                                               subtitle = `Subtitle 6` )
      ( title = `Very long Grid item title that should wrap 7`                                                                                                    subtitle = `This is a long subtitle 7` )
      ( title = `Grid item title B 8`                                                                                                                             subtitle = `Subtitle 8` )
      ( title = `Grid item title B 9 Grid item title B  Grid item title B 9 Grid item title B 9Grid item title B 9title B 9 Grid item title B 9Grid item title B` subtitle = `Subtitle 9` )
      ( title = `Grid item title B 10`                                                                                                                            subtitle = `Subtitle 10` )
      ( title = `Grid item title B 11`                                                                                                                            subtitle = `Subtitle 11` )
      ( title = `Grid item title B 12`                                                                                                                            subtitle = `Subtitle 12` )
      ( title = `Grid item title 13`                                                                                                                              subtitle = `Subtitle 13` )
      ( title = `Grid item title 14`                                                                                                                              subtitle = `Subtitle 14` )
      ( title = `Grid item title 15`                                                                                                                              subtitle = `Subtitle 15` )
      ( title = `Grid item title 16`                                                                                                                              subtitle = `Subtitle 16` )
      ( title = `Grid item title 17`                                                                                                                              subtitle = `Subtitle 17` )
      ( title = `Grid item title 18`                                                                                                                              subtitle = `Subtitle 18` )
      ( title = `Very long Grid item title that should wrap 19`                                                                                                   subtitle = `This is a long subtitle 19` )
      ( title = `Grid item title B 20`                                                                                                                            subtitle = `Subtitle 20` )
      ( title = `Grid item title B 21`                                                                                                                            subtitle = `Subtitle 21` )
      ( title = `Grid item title B 22`                                                                                                                            subtitle = `Subtitle 22` )
      ( title = `Grid item title B 23`                                                                                                                            subtitle = `Subtitle 23` )
      ( title = `Grid item title B 24`                                                                                                                            subtitle = `Subtitle 24` )
      ( title = `Grid item title B 21`                                                                                                                            subtitle = `Subtitle 21` )
      ( title = `Grid item title B 22`                                                                                                                            subtitle = `Subtitle 22` )
      ( title = `Grid item title B 23`                                                                                                                            subtitle = `Subtitle 23` )
    ).

  ENDMETHOD.

ENDCLASS.