Yeah, I thought about that. The problem is add() is usually called from a component's constructor, so you would have a case of a constructor (indirectly) calling a non-final method,
jk On Thu, Nov 20, 2008 at 11:27:39AM +0100, Peter Ertl wrote: > Wouldn't it be more powerful to override / hook into the process of > adding a component of a container? > > Something like that ... > > new WebMarkupContainer(id) > { > @Override > public void onComponentAdd(Component child) > { > // check the sealed flag, decorate the child, throw exception, or > do [whatever] > } > } > > > > > Am 20.11.2008 um 05:25 schrieb John Krasnay: > > >Hi folks, > > > >In my current Wicket app I have a panel that contains a vertically > >stacked list of sub-panels. Because the precise list of sub-panels is > >not known until runtime, I've implemented this with a RepeatingView. > >My > >parent panel has the following methods that I use to build the list of > >sub-panels ("rv" is my RepeatingView instance): > > > > public void addSubPanel(Panel subPanel) { rv.add(subPanel); } > > public String newSubPanelId() { return rv.newChildId(); } > > > >I use this same pattern in a number of other instances such as menus > >and > >button bars. > > > >The problem is that I often mistakenly call add instead of > >addSubPanel, > >which of course fails at render time with an exception that I always > >find hard to decipher. > > > >It would be nice if there was a way to "seal" a MarkupContainer once I > >had populated it such that any subsequent call to add, remove, or > >replace would fail immediately with an exception. This would make it > >much easier to find out where I had made the mistake. > > > >Does anyone else think this would be a worthwhile feature? > > > >jk > > > >--------------------------------------------------------------------- > >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] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]