public CmsSitemapTreeNode createNode(final CmsSitemapTreeNodeData entry) {

        final CmsSitemapTreeNode node = new CmsSitemapTreeNode();

        node.addLayoutClickListener(new LayoutClickListener() {

            private static final long serialVersionUID = 1L;

            @SuppressWarnings("synthetic-access")
            public void layoutClick(LayoutClickEvent event) {

                Component currentComponent = event.getClickedComponent();
                if (currentComponent != null) {
                    boolean linked = false;
                    do {
                        currentComponent = currentComponent.getParent();
                        if ((currentComponent != null)
                            && "linked".equals(((AbstractComponent)currentComponent).getData())) {
                            linked = true;
                        }
                        if (event.getClickedComponent() instanceof CmsResourceIcon) {
                            if (currentComponent == node) {
                                openTargetPage((CmsSitemapTreeNodeData)(node.getData()), linked);
                            } else if (currentComponent instanceof CmsSitemapTreeNode) {
                                break;
                            }
                        }
                    } while (currentComponent != null);
                }

            }

        });
        Resource icon = CmsResourceIcon.getSitemapResourceIcon(
            A_CmsUI.getCmsObject(),
            entry.getResource(),
            IconMode.localeCompare);
        CmsResourceInfo info = new CmsResourceInfo(
            entry.getClientEntry().getTitle(),
            entry.getClientEntry().getSitePath(),
            icon);
        info = CmsResourceInfo.createSitemapResourceInfo(
            entry.getResource(),
            OpenCms.getSiteManager().getSiteForRootPath(m_localeContext.getRoot().getRootPath()));
        info.getResourceIcon().addStyleName(OpenCmsTheme.POINTER);
        info.getResourceIcon().setDescription(CmsVaadinUtils.getMessageText(Messages.GUI_LOCALECOMPARE_OPEN_PAGE_0));

        if (entry.getClientEntry().isHiddenNavigationEntry()) {
            info.addStyleName(OpenCmsTheme.RESOURCE_INFO_WEAK);
        }
        final MenuBar menu = new MenuBar();
        boolean noTranslation = false;
        noTranslation = entry.isMarkedNoTranslation(m_localeContext.getComparisonLocale());

        final MenuItem main = menu.addItem("", null);
        main.setIcon(FontOpenCms.CONTEXT_MENU);
        CssLayout rightSide = new CssLayout();
        info.setButtonWidget(rightSide);
        rightSide.addComponent(menu);
        main.setCommand(new Command() {

            /** Serial version id. */
            private static final long serialVersionUID = 1L;

            public void menuSelected(MenuItem selectedItem) {

                List<I_CmsSimpleContextMenuEntry<MenuContext>> entries = Arrays.asList(

                    new EntryOpen(),
                    new EntryExplorer(),
                    new EntryProperties(),
                    new EntryLink(),
                    new EntryUnlink(),
                    new EntryMark(),
                    new EntryRemoveMark(),
                    new EntryCopy(),
                    new EntryInfo());

                MenuContext context = new MenuContext(entry, node);
                m_menu.setEntries(entries, context);
                m_menu.open(menu);

            }

        });

        menu.addStyleName("borderless o-toolbar-button o-resourceinfo-toolbar");
        if (entry.isLinked()) {
            CmsSite site = OpenCms.getSiteManager().getSiteForRootPath(m_localeContext.getRoot().getRootPath());
            CmsResourceInfo linkedInfo = CmsResourceInfo.createSitemapResourceInfo(
                readSitemapEntryFolderIfPossible(entry.getLinkedResource()),
                site);
            linkedInfo.addStyleName(OpenCmsTheme.RESOURCE_INFO_DIRECTLINK);
            rightSide.addComponent(linkedInfo, 0);
            linkedInfo.setWidth(RHS_WIDTH + "px");
            node.setContent(info);
            linkedInfo.setData("linked"); // Data used by click handler to distinguish clicked resource icons
            linkedInfo.getResourceIcon().setDescription(
                CmsVaadinUtils.getMessageText(Messages.GUI_LOCALECOMPARE_OPEN_PAGE_0));
            linkedInfo.getResourceIcon().addStyleName(OpenCmsTheme.POINTER);
        } else {
            if (noTranslation) {
                CmsResourceInfo noTranslationInfo = new CmsResourceInfo();
                String topMessage = CmsVaadinUtils.getMessageText(Messages.GUI_LOCALECOMPARE_NO_TRANSLATION_TOP_0);
                String bottomMessage = CmsVaadinUtils.getMessageText(
                    Messages.GUI_LOCALECOMPARE_NO_TRANSLATION_BOTTOM_0);
                noTranslationInfo.getTopLine().setValue(topMessage);
                noTranslationInfo.getBottomLine().setValue(bottomMessage);
                noTranslationInfo.getResourceIcon().setValue(
                    "<span class=\""
                        + OpenCmsTheme.RESOURCE_ICON
                        + " "
                        + OpenCmsTheme.NO_TRANSLATION_ICON
                        + "\">"
                        + FontAwesome.BAN.getHtml()
                        + "</span>");
                noTranslationInfo.addStyleName(OpenCmsTheme.RESOURCE_INFO_DIRECTLINK);
                noTranslationInfo.setWidth(RHS_WIDTH + "px");
                rightSide.addComponent(noTranslationInfo, 0);
            }
            node.setContent(info);
        }

        if (entry.hasNoChildren()) {
            node.setOpen(true);
            node.setOpenerVisible(false);
        }
        node.setData(entry);
        return node;

    }
public CmsSitemapTreeNode createNode ( final CmsSitemapTreeNodeData entry ) { final CmsSitemapTreeNode node = new CmsSitemapTreeNode ( ) ; node . addLayoutClickListener ( new LayoutClickListener ( ) { private static final long serialVersionUID = 1L ; @ SuppressWarnings ( "synthetic-access" ) public void layoutClick ( LayoutClickEvent event ) { Component currentComponent = event . getClickedComponent ( ) ; if ( currentComponent != null ) { boolean linked = false ; do { currentComponent = currentComponent . getParent ( ) ; if ( ( currentComponent != null ) && "linked" . equals ( ( ( AbstractComponent ) currentComponent ) . getData ( ) ) ) { linked = true ; } if ( event . getClickedComponent ( ) instanceof CmsResourceIcon ) { if ( currentComponent == node ) { openTargetPage ( ( CmsSitemapTreeNodeData ) ( node . getData ( ) ) , linked ) ; } else if ( currentComponent instanceof CmsSitemapTreeNode ) { break ; } } } while ( currentComponent != null ) ; } } } ) ; Resource icon = CmsResourceIcon . getSitemapResourceIcon ( A_CmsUI . getCmsObject ( ) , entry . getResource ( ) , IconMode . localeCompare ) ; CmsResourceInfo info = new CmsResourceInfo ( entry . getClientEntry ( ) . getTitle ( ) , entry . getClientEntry ( ) . getSitePath ( ) , icon ) ; info = CmsResourceInfo . createSitemapResourceInfo ( entry . getResource ( ) , OpenCms . getSiteManager ( ) . getSiteForRootPath ( m_localeContext . getRoot ( ) . getRootPath ( ) ) ) ; info . getResourceIcon ( ) . addStyleName ( OpenCmsTheme . POINTER ) ; info . getResourceIcon ( ) . setDescription ( CmsVaadinUtils . getMessageText ( Messages . GUI_LOCALECOMPARE_OPEN_PAGE_0 ) ) ; if ( entry . getClientEntry ( ) . isHiddenNavigationEntry ( ) ) { info . addStyleName ( OpenCmsTheme . RESOURCE_INFO_WEAK ) ; } final MenuBar menu = new MenuBar ( ) ; boolean noTranslation = false ; noTranslation = entry . isMarkedNoTranslation ( m_localeContext . getComparisonLocale ( ) ) ; final MenuItem main = menu . addItem ( "" , null ) ; main . setIcon ( FontOpenCms . CONTEXT_MENU ) ; CssLayout rightSide = new CssLayout ( ) ; info . setButtonWidget ( rightSide ) ; rightSide . addComponent ( menu ) ; main . setCommand ( new Command ( ) { private static final long serialVersionUID = 1L ; public void menuSelected ( MenuItem selectedItem ) { List < I_CmsSimpleContextMenuEntry < MenuContext > > entries = Arrays . asList ( new EntryOpen ( ) , new EntryExplorer ( ) , new EntryProperties ( ) , new EntryLink ( ) , new EntryUnlink ( ) , new EntryMark ( ) , new EntryRemoveMark ( ) , new EntryCopy ( ) , new EntryInfo ( ) ) ; MenuContext context = new MenuContext ( entry , node ) ; m_menu . setEntries ( entries , context ) ; m_menu . open ( menu ) ; } } ) ; menu . addStyleName ( "borderless o-toolbar-button o-resourceinfo-toolbar" ) ; if ( entry . isLinked ( ) ) { CmsSite site = OpenCms . getSiteManager ( ) . getSiteForRootPath ( m_localeContext . getRoot ( ) . getRootPath ( ) ) ; CmsResourceInfo linkedInfo = CmsResourceInfo . createSitemapResourceInfo ( readSitemapEntryFolderIfPossible ( entry . getLinkedResource ( ) ) , site ) ; linkedInfo . addStyleName ( OpenCmsTheme . RESOURCE_INFO_DIRECTLINK ) ; rightSide . addComponent ( linkedInfo , 0 ) ; linkedInfo . setWidth ( RHS_WIDTH + "px" ) ; node . setContent ( info ) ; linkedInfo . setData ( "linked" ) ; linkedInfo . getResourceIcon ( ) . setDescription ( CmsVaadinUtils . getMessageText ( Messages . GUI_LOCALECOMPARE_OPEN_PAGE_0 ) ) ; linkedInfo . getResourceIcon ( ) . addStyleName ( OpenCmsTheme . POINTER ) ; } else { if ( noTranslation ) { CmsResourceInfo noTranslationInfo = new CmsResourceInfo ( ) ; String topMessage = CmsVaadinUtils . getMessageText ( Messages . GUI_LOCALECOMPARE_NO_TRANSLATION_TOP_0 ) ; String bottomMessage = CmsVaadinUtils . getMessageText ( Messages . GUI_LOCALECOMPARE_NO_TRANSLATION_BOTTOM_0 ) ; noTranslationInfo . getTopLine ( ) . setValue ( topMessage ) ; noTranslationInfo . getBottomLine ( ) . setValue ( bottomMessage ) ; noTranslationInfo . getResourceIcon ( ) . setValue ( "<span class=\"" + OpenCmsTheme . RESOURCE_ICON + " " + OpenCmsTheme . NO_TRANSLATION_ICON + "\">" + FontAwesome . BAN . getHtml ( ) + "</span>" ) ; noTranslationInfo . addStyleName ( OpenCmsTheme . RESOURCE_INFO_DIRECTLINK ) ; noTranslationInfo . setWidth ( RHS_WIDTH + "px" ) ; rightSide . addComponent ( noTranslationInfo , 0 ) ; } node . setContent ( info ) ; } if ( entry . hasNoChildren ( ) ) { node . setOpen ( true ) ; node . setOpenerVisible ( false ) ; } node . setData ( entry ) ; return node ; }
Creates a sitemap tree node widget from a tree node bean.<p>

@param entry the tree node bean
@return the tree node widget