code: public static Component createAppFolderButton(CmsObject cms, final CmsAppCategoryNode node, final Locale locale) {
  
          Button button = createAppFolderIconButton((I_CmsFolderAppCategory)node.getCategory(), locale);
          button.addClickListener(new ClickListener() {
  
              private static final long serialVersionUID = 1L;
              private static final int DEFAULT_WIDTH = 855;
              private static final int DEFAULT_MAX_APP_PER_ROW = 5;
              private static final int MARGIN = 10;
  
              public void buttonClick(ClickEvent event) {
  
                  CmsAppHierarchyPanel panel = new CmsAppHierarchyPanel(new CmsDefaultAppButtonProvider());
                  //                panel.setCaption(((I_CmsFolderAppCategory)node.getCategory()).getName(locale));
                  panel.setCaption("Test caption");
  
                  panel.fill(node, locale);
  
                  Panel realPanel = new Panel();
                  realPanel.setContent(panel);
                  realPanel.setCaption(((I_CmsFolderAppCategory)node.getCategory()).getName(locale));
                  int browtherWidth = A_CmsUI.get().getPage().getBrowserWindowWidth();
                  if (node.getAppConfigurations().size() <= DEFAULT_MAX_APP_PER_ROW) {
                      panel.setComponentAlignment(panel.getComponent(0), com.vaadin.ui.Alignment.MIDDLE_CENTER);
                  }
                  if (browtherWidth < DEFAULT_WIDTH) {
                      realPanel.setWidth((browtherWidth - (2 * MARGIN)) + "px");
                  } else {
                      realPanel.setWidth(DEFAULT_WIDTH + "px");
                  }
                  final Window window = CmsBasicDialog.prepareWindow(DialogWidth.content);
                  window.setResizable(false);
                  window.setContent(realPanel);
                  window.setClosable(true);
                  window.addStyleName("o-close-on-background");
                  window.setModal(true);
                  window.setDraggable(false);
  
                  CmsAppWorkplaceUi.get().addWindow(window);
  
              }
          });
          return button;
      }
docs: Creates a properly styled button for the given app.<p>
  
  @param cms the cms context
  @param node the node to display a buttom for
  @param locale the locale
  
  @return the button component
  
  (I_CmsFolderAppCategory)childNode.getCategory(),
  childNode.getAppConfigurations())