I'm fine with either too. -Matej
On 3/31/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote:
That's an idea too. It's an extra method (not so nice) but more pricise (nice). I'm fine with either. What do others think? Eelco On 3/31/07, Igor Vaynberg <[EMAIL PROTECTED]> wrote: > or add a replaceOrAdd() method > > -igor > > > On 3/31/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > > > > I'm backporting Wicket In Action's code currently, and stumbled upon > > something I really liked to be able to do in 2.0 which I can't do in > > the same way in 1.3. > > > > Consider this: > > > > void setContentPanel() { > > if (inEditMode) { > > new DiscountsEditList(this, "content"); > > } else { > > new DiscountsList(this, "content"); > > } > > } > > > > I'd like to be able to write that as: > > > > void setContentPanel() { > > if (inEditMode) { > > replace(new DiscountsEditList("content")); > > } else { > > replace(new DiscountsList("content")); > > } > > } > > > > However, there is this check in replace: > > > > // Add to map > > final Component replaced = put(child); > > > > // Look up to make sure it was already in the map > > if (replaced == null) > > { > > throw new WicketRuntimeException( > > exceptionMessage("Cannot > > replace a component which has not been > > added: id='" > > + > > child.getId() + "', component=" + child)); > > } > > > > so I'd have to do something like: > > > > if (get("content") != null) { > > replace(new DiscountsEditList("content")); > > } else { > > add(new DiscountsEditList("content")); > > } > > > > yech. I really don't see the added value of that check. I understand > > how it got in there, but when you think of it, what actual problem > > would this solve? Imo, we should just get rid of that check so that > > calling replace would be a simple add if the component wasn't added > > yet. > > > > Eelco > > >