Thanks Martin, I will look into that. But won't it be a problem that I will add the <input/> / TextField to the Border without having any markup inside the Border? Won't I need my <input/> markup inside the border <div/>s?
Tom > Gesendet: Dienstag, 03. September 2019 um 09:22 Uhr > Von: "Martin Grigorov" <[email protected]> > An: "[email protected]" <[email protected]> > Betreff: Re: Re: Wrapping a FormComponent with a Border > > Hi Tom, > > Since your "user" is going to add a TextField in the Java code then I > assume (s)he is going to add <input wicket:id="..."/> in the markup. > Your IComponentInitializationListener will replace all components of type > TextField which do not have FormGroup as a parent with a MyFormGroup. > > public class MyFormGroup extends FormGroup { > // constructor(s) > > @Override > public void onComponentTag(ComponentTag tag) { > super(tag); > tag.setName("div"); // this modifies <input> to <div> > } > } > > I am not sure, but you may also need to expand the tag from OpenClose (i.e. > <input/>) to open+close (i.e. <div></div>). See ComponentTag#isOpenClose() > and Component#afterRender(); > > On Tue, Sep 3, 2019 at 10:09 AM "Tom Götz" <[email protected]> wrote: > > > Martin, > > > > maybe you could point me into the right direction concerning the markup > > manipulation part? > > > > This is what I got in my HTML: > > > > <form wicket:id="form"> > > <input wicket:id="input" type="text" /> > > </form> > > > > I guess this is what I need for effectively replacing the input with a > > FormGroup border: > > > > <form wicket:id="form"> > > <div wicket:id="border"> > > <input wicket:id="input" type="text" /> > > </div> > > </form> > > > > Where would be the best place in the code to start looking? > > > > Thanks in advance > > Tom > > > > > > > > > > > Gesendet: Montag, 02. September 2019 um 13:57 Uhr > > > Von: "Tom Götz" <[email protected]> > > > An: [email protected] > > > Betreff: Re: Wrapping a FormComponent with a Border > > > > > > Thanks Martin, this is exactly what I had in mind. I already implemented > > 1), replacing the TextField with said Border but now am stuck with the > > "HTML manipulation" part ... > > > > > > Tom > > > > > > > > > > Gesendet: Montag, 02. September 2019 um 13:47 Uhr > > > > Von: "Martin Grigorov" <[email protected]> > > > > An: "[email protected]" <[email protected]> > > > > Betreff: Re: Wrapping a FormComponent with a Border > > > > > > > > Hi Tom, > > > > > > > > I imagine two ways: > > > > 1) use org.apache.wicket.application.IComponentInitializationListener > > that > > > > manipulates the component tree whenever the passed component is an > > instance > > > > of TextField and has no (direct?!) parent of type FormGroup > > > > 2) use AOP > > > > > > > > In both cases you will need to also the markup because FormGroup > > expects to > > > > be attached on a <div>, while you will have an <input/>. For this you > > will > > > > probably need to extend Wicket Bootstrap's FormGroup and in your > > custom one > > > > override onComponentTag() (and onComponentTagBody() - most probably > > not). > > > > > > > > On Mon, Sep 2, 2019 at 2:05 PM "Tom Götz" <[email protected]> wrote: > > > > > > > > > Let me try to explain what I want to achieve more precisely: > > > > > > > > > > - user adds a TextField to a page > > > > > - I want to replace that TextField with a Border (Wicket Border > > component, > > > > > e.g. FormGroup from wicket-bootstrap) and put the TextField inside > > that > > > > > border > > > > > > > > > > The problem ist not: "how do I wrap a component with some HTML > > markup?" > > > > > (either generated by Java code or clientside), but: how can I > > manipulate > > > > > the component tree (server side) in such a way, that I can remove the > > > > > TextField from it's parent and replace it with a Border that > > contains that > > > > > TextField....!? > > > > > > > > > > Tom > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Gesendet: Montag, 02. September 2019 um 12:49 Uhr > > > > > > Von: "Tobias Soloschenko" <[email protected] > > > > > > > > > An: [email protected] > > > > > > Betreff: Re: Wrapping a FormComponent with a Border > > > > > > > > > > > > Hi, > > > > > > > > > > > > why not add a css class and style it? > > > > > > > > > > > > kind regards > > > > > > > > > > > > Tobias > > > > > > > > > > > > > Am 02.09.2019 um 12:20 schrieb Ernesto Reinaldo Barreiro < > > > > > [email protected]>: > > > > > > > > > > > > > > Another possibility is to do this client side... > > > > > > > > > > > > > >> On Mon, Sep 2, 2019, 11:43 AM "Tom Götz" <[email protected]> > > wrote: > > > > > > >> > > > > > > >> That would be great, thanks in advance! > > > > > > >> > > > > > > >> Tom > > > > > > >> > > > > > > >> > > > > > > >>> Gesendet: Montag, 02. September 2019 um 10:39 Uhr > > > > > > >>> Von: "Ernesto Reinaldo Barreiro" <[email protected]> > > > > > > >>> An: [email protected] > > > > > > >>> Betreff: Re: Wrapping a FormComponent with a Border > > > > > > >>> > > > > > > >>> Hi, > > > > > > >>> > > > > > > >>>> On Mon, Sep 2, 2019 at 11:13 AM Tom Götz <[email protected] > > > > > > > > wrote: > > > > > > >>>> > > > > > > >>>> Thanks Ernesto! This example is from 2007 though and uses > > > > > > >>>> compent.setComponentBorder .... > > > > > > >>>> Is there something more close to current Wicket versions > > available > > > > > > >> maybe? > > > > > > >>>> :) > > > > > > >>>> > > > > > > >>> > > > > > > >>> I think I have somewhere on a private project something similar > > > > > > >> implemented > > > > > > >>> for Wicket 7.x... I can try to dig it up and send classes to > > you. > > > > > > >>> > > > > > > >>> -- > > > > > > >>> Regards - Ernesto Reinaldo Barreiro > > > > > > --------------------------------------------------------------------- > > 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]
