docs: protected static VerticalLayout getButtonLayout(int size, final Runnable clickedRunnable) {
  
          VerticalLayout layout = new VerticalLayout();
          layout.setSpacing(true);
          layout.setMargin(true);
          layout.addStyleName(ValoTheme.LAYOUT_HORIZONTAL_WRAPPING);
  
          Button clean_flex = getFlushButton(
              Messages.GUI_CACHE_FLEXCACHE_CLEAN_ADMIN_TOOL_NAME_0,
              Messages.GUI_CACHE_FLEXCACHE_CLEAN_ADMIN_TOOL_HELP_0,
              new CmsFlexCacheCleanDialog(),
              clickedRunnable);
  
          Button clean_image = getFlushButton(
              Messages.GUI_CACHE_IMAGECACHE_CLEAN_ADMIN_TOOL_NAME_0,
              Messages.GUI_CACHE_IMAGECACHE_CLEAN_ADMIN_TOOL_HELP_0,
              new CmsImageCacheCleanDialog(),
              clickedRunnable);
  
          Button clean_core = getFlushButton(
              Messages.GUI_CACHE_CORECACHE_CLEAN_ADMIN_TOOL_NAME_0,
              Messages.GUI_CACHE_CORECACHE_CLEAN_ADMIN_TOOL_HELP_0,
              new CmsConfirmSimpleFlushDialog(
                  CmsVaadinUtils.getMessageText(Messages.GUI_CACHE_CORECACHE_CLEAN_ADMIN_TOOL_CONF_0)),
              new Runnable() {
  
                  public void run() {
  
                      OpenCms.fireCmsEvent(new CmsEvent(I_CmsEventListener.EVENT_CLEAR_CACHES, null));
                      clickedRunnable.run();
                  }
              });
  
          Button clean_repo = getFlushButton(
              Messages.GUI_CACHE_JSP_REPOSITORY_ADMIN_TOOL_NAME_0,
              Messages.GUI_CACHE_JSP_REPOSITORY_ADMIN_TOOL_HELP_0,
              new CmsConfirmSimpleFlushDialog(
                  CmsVaadinUtils.getMessageText(Messages.GUI_CACHE_JSP_REPOSITORY_ADMIN_TOOL_CONF_0)),
              new Runnable() {
  
                  public void run() {
  
                      OpenCms.fireCmsEvent(
                          new CmsEvent(
                              I_CmsEventListener.EVENT_FLEX_PURGE_JSP_REPOSITORY,
                              Collections.<String, Object> emptyMap()));
                      OpenCms.fireCmsEvent(
                          new CmsEvent(
                              I_CmsEventListener.EVENT_FLEX_CACHE_CLEAR,
                              Collections.<String, Object> singletonMap(
                                  "action",
                                  new Integer(CmsFlexCache.CLEAR_ENTRIES))));
                      clickedRunnable.run();
                  }
              });
  
          Button reini = getFlushButton(
              Messages.GUI_CACHE_REINI_TOOL_NAME_0,
              Messages.GUI_CACHE_REINI_TOOL_NAME_HELP_0,
              new CmsConfirmSimpleFlushDialog(CmsVaadinUtils.getMessageText(Messages.GUI_CACHE_REINI_TOOL_CONF_0)),
              new Runnable() {
  
                  public void run() {
  
                      try {
                          // re-initialize the workplace
                          OpenCms.getWorkplaceManager().initialize(A_CmsUI.getCmsObject());
                          // fire "clear caches" event to reload all cached resource bundles
                          OpenCms.fireCmsEvent(I_CmsEventListener.EVENT_CLEAR_CACHES, new HashMap<String, Object>());
                          clickedRunnable.run();
                      } catch (CmsException e) {
                          LOG.error("Unable to reinitialize workspace", e);
                      }
                  }
              });
  
          List<Component> elements = new ArrayList<Component>();
          elements.add(clean_core);
          elements.add(clean_flex);
          elements.add(clean_image);
          elements.add(reini);
          elements.add(clean_repo);
  
          HorizontalLayout row = new HorizontalLayout();
          row.setSpacing(true);
          for (int i = 0; i < elements.size(); i++) {
  
              if (size > 0) {
                  row.addComponent(elements.get(i));
  
                  if (((i % (size - 1)) == 0) & (i > 0)) {
                      layout.addComponent(row);
                      row = new HorizontalLayout();
                      row.setSpacing(true);
                  }
  
              } else {
                  layout.addComponent(elements.get(i));
              }
          }
  
          return layout;
      }