For your example (NavigationToolbar in DefaultDataTable) - just don't
use DefaultDataTable.  DDT is provided simply as a convenience with
the most common features of a table.  If it does not suit your needs,
create your own subclass of DataTable that uses whatever features you
want.  You will see that it can be done with a few lines of code.

With regards to multiple wicket:extend tags - that is also an old,
dead horse that doesn't need to be beat right now.  The user list has
a lot of discussion on it.  The simplest way to allow a child to
contribute multiple components to a page is the same as you would do
in normal java (which does not allow multiple inheritance) - expose
multiple overridable methods that provide the components... i.e.:

// I don't have my IDE open, so some method names may be wrong
ParentComponent  {

  public void onBeforeRender {
    if (!hasBeenRendered()) {
      add(createLeftNavPanel(getModel()));
      add(createContentPanel(getModel()));
      add(createTopHeaderPanel(getModel()));
    }

    protected Component createContentPanel(IModel model) {
      // this can be overridden in subclasses
      return MyDefaultTypeOfContentPanel(model);
    }
}

--
Jeremy Thomerson
http://www.wickettraining.com




On Fri, May 15, 2009 at 12:54 AM, Vladimir K <[email protected]> wrote:
>
> Jeremy,
>
> I can't add another example to mentioned RepeatingView.
> Concerning RepeatingView... Wicket allow me just one point to subclass
> parent component markup within <wicket:child/> tag. RepeatingView comes in
> handy. It allows me to reserve some places in base component markup and put
> something there in subclasssing component markup. I saw examples of that in
> some projects when studying Wicket. So I just copy the idea without thinking
> about WHEN to call the overridden method that fills in the RepeatingView
> instance. It is my fault :)
>
> If you add "name" attribute to wicket:child tag, and multiple <wicket:extend
> name="..."> tags I would use it instead of RepeatingView.
>
> Concerning your post on onBeforeRender ... I didn't say that it is related
> to class' constructor. Yes it is related to delayed component creation. And
> the reason why I delay creation is to follow mentioned rule. It is not
> related to use of models in my case. I delay creation to allow subclassing
> components to replace some default parts of base component. Probably I'm
> doing something wrong. Then suggest me how to do it right. For instance I
> would like to subclass NatigationToolbar in DefaultDataTable. What should I
> do?
>
>
> Jeremy Thomerson-5 wrote:
>>
>> Do you have any examples of where Wicket calls an overridable method
>> from the constructor of a Wicket class?  If so, please file it as a
>> JIRA - that would be a bug.
>>
>> Most java programmers know not to call overridable methods from the
>> constructor as a general rule, although there are times when it could
>> inadvertantly happen - which is why we need bug reports if you see
>> that happening.
>>
>> --
>> Jeremy Thomerson
>> http://www.wickettraining.com
>>
>>
>>
>>
>> On Fri, May 15, 2009 at 12:01 AM, Vladimir K <[email protected]> wrote:
>>>
>>> Martijn,
>>>
>>> here Java is not safe as a language. Yo're able to invoke overrided
>>> methods
>>> on non-completely constructed objects.
>>>
>>> from my perspective it is a regular case in Wicket:
>>>
>>> class SampleComponent extends ... {
>>>    String parameter;
>>>
>>>    SampleComponent(String id, String parameter) {
>>>        super(id);
>>>        this.parameter = parameter;
>>>    }
>>>
>>>    // method is called from within superconstructor
>>>   �...@override
>>>    void createAdditionalComponents(RepeatingView rv) {
>>>        useSomehow(parameter);
>>>    }
>>> }
>>>
>>> I know two approaches to work around:
>>> - onBeforeRender
>>> - a closure as a constructor formal parameter.
>>>
>>> But the latter does not help with built-in components.
>>>
>>> If Wicket does not help us with adding appropriate method for
>>> second-step-initialization it should document it in wiki, javadoc and
>>> books
>>> "dear user, when overriding methods, beware using of yet unassigned
>>> constructor parameters". Hmm ... sounds stupid :)
>>>
>>>
>>> Martijn Dashorst wrote:
>>>>
>>>> This has been discussed till death previously and we have excluded it
>>>> from our roadmap. We will never have an init() method for components.
>>>> Gossling gave us a Constructor to initialize your Objects.
>>>>
>>>> Search and read the archives if you want more information on the
>>>> subject.
>>>>
>>>> Martijn
>>>>
>>>> On Fri, May 15, 2009 at 12:36 AM, Juan G. Arias <[email protected]>
>>>> wrote:
>>>>> It would be very nice to add a new phase for component creation, like I
>>>>> said, an init() or createContent().
>>>>> Is there a JIRA issue for that?
>>>>> If yes, I will vote for it and suggest to change the name to something
>>>>> _not_
>>>>> related to the rendre phase.
>>>>>
>>>>> Thanks!
>>>>> Juan
>>>>>
>>>>>
>>>>> On Thu, May 14, 2009 at 3:31 PM, Daniel Stoch
>>>>> <[email protected]>wrote:
>>>>>
>>>>>> I think you can use hasBeenRendered() method instead of custom boolean
>>>>>> flag.
>>>>>>
>>>>>> --
>>>>>> Daniel
>>>>>>
>>>>>> On 2009-05-14, at 20:15, Jeremy Thomerson wrote:
>>>>>>
>>>>>>  You could probably do it in onBeforeRender - but you would need to
>>>>>>> keep a boolean flag to check if it's the first render so that you
>>>>>>> don't recreate them on a second render....  There was talking of
>>>>>>> adding an onBeforeFirstRender method, but I don't think it's happened
>>>>>>> yet - you could look for the method to see if I'm wrong.
>>>>>>>
>>>>>>> --
>>>>>>> Jeremy Thomerson
>>>>>>> http://www.wickettraining.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>> For additional commands, e-mail: [email protected]
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Become a Wicket expert, learn from the best: http://wicketinaction.com
>>>> Apache Wicket 1.3.5 is released
>>>> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Component-creation-and-initialization-tp23545666p23553458.html
>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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]
>>
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/Component-creation-and-initialization-tp23545666p23553847.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> 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