You can always add the components during "first render" rather than at
instantiation time.  The problem is that you have to keep some state
around to know whether you've been rendered yet or not.

On Thu, Dec 11, 2008 at 2:45 AM, Nino Saturnino Martinez Vazquez Wael
<[EMAIL PROTECTED]> wrote:
> Yeah, but the other way are a bit cleaner java code wise... And  I Scott
> where heading into modifying a lot of stuff that would bring an over
> complicated solution to work..
>
> So the trickery would be to edit  and a whole bunch of other
> stuff(probably)IMarkupResourceStreamProvider, instead of facilitating the
> simple features of wicket.. :)
>
> Jeremy Thomerson wrote:
>>
>> You can also do exactly as you mentioned....
>>
>> In your base page, have a repeating view (i.e. ListView) that simply loops
>> over a "List<Component> childPanels"..... Then your method
>> addToRepeater(Component component) will add to that list.
>>
>> Should work exactly as you described.  What trickery is needed?  I guess I
>> miss that part.
>>
>> On Wed, Dec 10, 2008 at 5:20 PM, Nino Saturnino Martinez Vazquez Wael <
>> [EMAIL PROTECTED]> wrote:
>>
>>
>>>
>>> Scott,
>>>
>>> Think inheritance :)
>>>
>>> Just write a super which has abstract methods that returns components for
>>> c1..c4() and thats it.. no need for trickery with
>>> IMarkupResourceStreamProvider ...
>>>
>>> Should I elaborate more?
>>>
>>> You could also take a look at the wicketstuff accordion thing, it does
>>> something along these lines[1]...
>>>
>>>
>>> 1=
>>>
>>> http://wicketstuff.org/confluence/display/STUFFWIKI/wicket-contrib-accordion
>>>
>>> regards
>>>
>>>
>>> smackie604 wrote:
>>>
>>>
>>>>
>>>> Hi,
>>>>
>>>> My team has adopted wicket as it's web framework and we have been busy
>>>> creating a lot of interesting Panels to build pages for our product.  It
>>>> is
>>>> turning out that most of the time all the components on the page are
>>>> Panels
>>>> and we end up with a situation like this:
>>>>
>>>> MyPage.java
>>>> --------------
>>>> public class MyPage extends BasePage
>>>> {
>>>>  MyPage()
>>>>  {
>>>>   add(SomePanel("c1"));
>>>>   add(SomePanel("c2"));
>>>>   add(SomePanel("c3"));
>>>>   add(SomePanel("c4"));
>>>>  }
>>>> }
>>>>
>>>> MyPage.html
>>>> ---------------
>>>> <wicket:extend>
>>>>  <wicket:container wicket:id="c1"/>
>>>>  <wicket:container wicket:id="c2"/>
>>>>  <wicket:container wicket:id="c3"/>
>>>>  <wicket:container wicket:id="c4"/>
>>>> </wicket:extend>
>>>>
>>>> It would be nice if we didn't have to write html files for pages in
>>>> these
>>>> situations and instead just do something like this:
>>>>
>>>> MyPage.java
>>>> --------------
>>>> public class MyPage extends BasePage
>>>> {
>>>>  MyPage()
>>>>  {
>>>>   addToRepeater(SomePanel("c1"));
>>>>   addToRepeater(SomePanel("c2"));
>>>>   addToRepeater(SomePanel("c3"));
>>>>   addToRepeater(SomePanel("c4"));
>>>>  }
>>>> }
>>>>
>>>> Where BasePage will have a method called addToRepeater which just adds
>>>> the
>>>> component to the repeater.
>>>> I see we could do some trickery by implementing
>>>> IMarkupResourceStreamProvider on the BasePage to force the template of
>>>> it's
>>>> child classes to always use BasePage.html.  I'm not sure this is the
>>>> best
>>>> way of doing this, does anyone have any comments on using this approach?
>>>>
>>>> Thanks,
>>>>
>>>> Scott
>>>>
>>>>
>>>>
>>>
>>> --
>>> -Wicket for love
>>>
>>> Nino Martinez Wael
>>> Java Specialist @ Jayway DK
>>> http://www.jayway.dk
>>> +45 2936 7684
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>>
>>
>
> --
> -Wicket for love
>
> Nino Martinez Wael
> Java Specialist @ Jayway DK
> http://www.jayway.dk
> +45 2936 7684
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to