Thanks. The empty WebComponent did fine for the moment, although I think I like the other solution better for long-term.

I'm still curious to know what needs to be done in onRender() to make a component viable, but that's not top priority right now.

  -- scott



Simon Berriman wrote:
I've done this... - both to them, actually! I constructed my own 
PagingNavigator, like this:

public class EBSPagingNavigator extends PagingNavigator
{
        public EBSPagingNavigator(String id, IPageable pageable)
        {
                this(id, pageable, null);
        }

        public EBSPagingNavigator(String id, IPageable pageable, 
IPagingLabelProvider labelProvider)
        {
                super(id, pageable, labelProvider);
                if (pageable.getPageCount() < 2) setVisible(false);
        }
}

which makes itself invisible if there are less than two pages.  This is backed up by 
a call to setRenderBodyOnly(true) in the instanciating code, and is placed in a 
<span> in the markup.

w.r.t. the onRender(), yes it does do a lot more than just return; if you ever do find a 
need for an empty component, just do: add(new WebComponent("thingy"));

You can also use WebMarkupContainer, which you can add() other things to; I acutally 
have the PagingNavigator in a colspan'ed table cell, and a WebMarkupContainer on the 
<tfoot> tag, so that the above code gets used thus:

        WebMarkupContainer dataFootSect = new 
WebMarkupContainer("dataFootSect");

        ... // 'aplv' gets defined as a subclass of PageableListView

        Component dataPanelNav = new EBSPagingNavigator("dataNav", aplv);
        dataPanelNav.setRenderBodyOnly(true);
        if ( !dataPanelNav.isVisible()) dataFootSect.setVisible(false);

so dataFootSect does nothing other than give me the ability to make the whole 
<tfoot> section invisible.

hth,
-S.


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Scott Sauyet
Sent: 12 September 2005 13:51
To: [email protected]
Subject: [Wicket-user] Minimal contract for onRender()

I guess there are really two questions here.

First, I wanted to create an empty component (more about why below) and did what I thought was reasonable:

             add(new Component("navigator") {
                 public void onRender() {}
             });

but I get a wicket.markup.MarkupException:

     Markup element at index 33 failed to advance the markup stream

So obviously I need to do more inside onRender than simply return. What do I need to do? The Javadocs don't say. I would like to know this even if there is an answer to my second question below that obviates the need in this particular case: I'm trying to learn at least a little about how Wicket works.

Second, is there a simple way to hide the PagingNavigator when there is only one page of results? Most often for my application, there will be only a single page, but there is no real limit to the number of possible entries, so I do want it paged. I was hoping to hide the Navigator unless it was required. That was why I wanted an empty component. I tried to do this:

         if (myList.size() > getItemsPerPage()) {
             add(new PagingNavigator("navigator", listView));
         } else {
             add(new Component("navigator") {
                 public void onRender() {}
             });
         }

and that is where I ran into the problem above. Is there a simpler way to do this?

Thanks,

   -- Scott Sauyet



<!-- -------------------------------------------------------














Come visit us at:
Content Management Europe Exhibition.  29th November - 1st December 2005, 
Olympia Grand Hall, London.  Stand # 341

GOSS - Ranked 4th in the Deloitte Technology Fast 50 Awards 2004 and 88th in the Deloitte Technology Fast 500 EMEA. This email contains proprietary information, some or all of which may be legally privileged. It is for the intended recipient only. If an addressing or transmission error has misdirected this email, please notify the author by replying to this email. If you are not the intended recipient you may not use, disclose, distribute, copy, print or rely on this email.
Email transmission cannot be guaranteed to be secure or error free, as 
information may be intercepted, corrupted, lost, destroyed, arrive late or 
incomplete or contain viruses. This email and any files attached to it have 
been checked with virus detection software before transmission. You should 
nonetheless carry out your own virus check before opening any attachment. GOSS 
Interactive Ltd accepts no liability for any loss or damage that may be caused 
by software viruses.


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user







-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to