code: private void applySecurity(final SecurityContext securityContext, boolean update) {
  
          // System.out.println("<< Process SecurityContext on column "+title+": "+securityContext+">>");
  
          // calculate accessible menu items
          filterNonPrivilegeOperations(securityContext, accessibleTopMenuItems, topMenuItems);
          filterNonPrivilegeOperations(securityContext,accessibleMenuItems, menuItems);
  
          // the top menu is build here
          if(!plain)
              buildTopMenu(headerMenu);
  
          // the row level menu is build when the celltable is filled
          // hence we need to refresh it
  
          toggleRowLevelTools(() -> true); // hide it
          Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
              @Override
              public void execute() {
                  dataProvider.refresh();
                  Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
                      @Override
                      public void execute() {
                          toggleRowLevelTools(() -> selectionModel.getSelectedObject() == null); // show when selected
                      }
                  });
              }
          });
  
      }
docs: Central point for security context changes
  This will be called when:
  
  a) the widget is attached (default)
  b) the security context changes (i.e. scoped roles)