Tree uses BaseComponent that doesn't seem to be in tapestry5?

On Fri, Mar 18, 2016 at 2:15 PM, Chris Poulsen <mailingl...@nesluop.dk>
wrote:

> Hi,
>
> Take a look at the Tapestry Tree component to see how recursive rendering
> can be done.
>
> --
> Chris
>
> On Fri, Mar 18, 2016 at 6:17 AM, Qbyte Consulting <
> qbyteconsult...@gmail.com
> > wrote:
>
> > I am creating a Menu component (for a ul tag) that needs to
> > programmatically generate the child links.
> >
> > I already have a MenuItem component, but this is parameter bound to a
> > template, whereas now I need to programmatically drive the parameters.
> >
> > I either need to be able to create the existing MenuItem objects somehow
> in
> > the Menu component and render them, or I simply write the links out in
> the
> > menu - however since my Menu component isn't extending AbstractLink (like
> > MenuItem) I can't use writeLink().
> >
> > Any ideas what is the simplest approach to resolve this? Code below.
> >
> > John
> >
> >
> > public class Menu {
> >
> >     /** The text. */
> >     @Parameter(required = true, allowNull = false, defaultPrefix =
> > BindingConstants.LITERAL)
> >     private String name;
> >
> >     /** The resources. */
> >     @Inject
> >     private ComponentResources resources;
> >
> >     /** The component source. */
> >     @Inject
> >     private ComponentSource componentSource;
> >
> >     @Inject
> >     private PageRenderLinkSource linkSource;
> >
> > /** The messages. */
> > @Inject
> > private Messages messages;
> >
> >     @Inject
> >     private MenuService menuService;
> >
> >     /** The state bean. */
> >     @SessionState(create = false)
> >     private SessionStateBean stateBean;
> >
> >     /**
> >      * If provided, this is the activation context for the target page
> (the
> >      * information will be encoded into the URL). If not provided, then
> the
> >      * target page will provide its own activation context.
> >      */
> >     @Parameter
> >     private Object[] context;
> >
> >     /**
> >      * Begin render.
> >      *
> >      * @param writer the writer
> >      */
> >     void beginRender(MarkupWriter writer) {
> >     writer.element("ul");
> >     for (String pageName :
> > menuService.getPageNames(MenuService.Menu.valueOf(name))) {
> >     renderMenuItem(pageName, writer);
> >     }
> >     }
> >
> >     private void renderMenuItem(String page, MarkupWriter writer) {
> >         Link link = resources.createPageLink(page,
> >        resources.isBound("context"), context);
> >        writer.element("li");
> > NO!!        writeLink(writer, link);
> >  writer.writeRaw(messages.get(page.toLowerCase().concat(".link")));
> >     writer.end();
> >     writer.end();
> >     }
> >
> >     /**
> >      * After render.
> >      *
> >      * @param writer the writer
> >      */
> >     void afterRender(MarkupWriter writer) {
> >    writer.end();
> >     }
> > }
> >
> >
> > public class MenuItem extends AbstractLink {
> >
> >     /**
> >      * The logical name of the page to link to.
> >      */
> >     @Parameter(required = true, allowNull = false, defaultPrefix =
> > BindingConstants.LITERAL)
> >     private String page;
> >
> >     /** The text. */
> >     @Parameter(required = true, allowNull = false, defaultPrefix =
> > BindingConstants.LITERAL)
> >     private String text;
> >
> >     /** The resources. */
> >     @Inject
> >     private ComponentResources resources;
> >
> >     /** The component source. */
> >     @Inject
> >     private ComponentSource componentSource;
> >
> >     /** The state bean. */
> >     @SessionState(create = false)
> >     private SessionStateBean stateBean;
> >
> >     /**
> >      * If provided, this is the activation context for the target page
> (the
> >      * information will be encoded into the URL). If not provided, then
> the
> >      * target page will provide its own activation context.
> >      */
> >     @Parameter
> >     private Object[] context;
> >
> >     /**
> >      * Begin render.
> >      *
> >      * @param writer the writer
> >      */
> >     void beginRender(MarkupWriter writer) {
> > if (isDisabled())
> >    return;
> >    Link link = resources.createPageLink(page,
> >    resources.isBound("context"), context);
> >    writer.element("li");
> >    writeLink(writer, link);
> >    writer.writeRaw(text);
> >     }
> >
> >     /**
> >      * After render.
> >      *
> >      * @param writer the writer
> >      */
> >     void afterRender(MarkupWriter writer) {
> > if (isDisabled())
> >    return;
> > writer.end();
> > writer.end();
> >     }
> > }
> >
>

Reply via email to