Re: Wicket Panel tag
Hi, 1) To get wicket to output a dom id you must call mycomponent.setOutputMarkupId(true). This will output a generated dom id, which you can access in your java code by calling mycomponent.getMarkupId(). Wicket will overrwrite any dom id in your code, if that element is used for a wicket component (ie has wicket:id=myid) 2) Wicket tags like wicket:panel are removed if the application is running in deployment mode, but are rendered if the application is running in development. You can control this explicitly by calling getMarkupSettings().setStripWicketTags(true); in your application init code, or by using Application.get().getMarkupSettings().setStripWicketTags(true); in any wicket code. -- Regards - Richard Wilkinson Developer, jWeekend: OO Java Technologies - Development and Training http://jWeekend.com On 21 May 2010 17:51, Brian Mulholland blmulholl...@gmail.com wrote: Our app will be using ExtJS tab controls. So to make that easier I wrapped the ExtJS code up into a Wicket Panel to hide the complexity of working with ExtJS. The idea is that I would tell my class what the wicket:id of the span/div was to draw the thing to, as well as naming the N subtab id's (these are the HTML ids) so that the class could write out the javascript code to render the tabs from the markup already in the page. So the HTML would look like: div wicket:id='drawTabsHere' div id=tab1Tab One!/div div id=tab2Tab Two!/div /div And the java code would look like: add(new MyTabPanel(drawTabsHere, tab1, tab2)); The premise is REALLY close to working. Here's my problems: 1) The wicket:id= attribute on the div won't copy the id into the markup. I must repeat it in the template div wicket:id='drawTabsHere' id='drawTabsHere'. I tried adding the id via an Attribute Modifier like so: add(new AttributeModifier(id, new Model(renderToID))); But it ignores me. I'd rather not force my developers to repeat the id. How can I accomplish that? 2) More importantly, the rendering of the tabs is malfunctioning. I believe that it is because the panel actually DRAWS the wicket:panel tag around the subtab div's and thus screws up ExtJS. I didn't realize that panels wrote the wicket tags out to the browser until i hit this. I'd always assumed that wicket: tags were for the server's use, and were not rendered. How can I suppress this so that the DOM hierarchy is right for my use? I do have a hidden input tag in the wicket:panel in order to preserve the selected tab so that we preserve it between submits. I tried removing it and it did not help, but cannot remove the wicket:panel without Wicket throwing an exception. -- Brian Mulholland - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Wicket Panel tag
Cool, those both helped alot. Unfortunately, they have lead me to realize another major flaw in my plan. Of course the wicket panel is destroying the content in the template. In most cases that is a feature, but in this case the point is for the control to act as a wrapper around other content (both static AND wicket replaced). But of course, the panel is replacing that content. So is there a way to preserve the child content? To illustrate the plan, I want my markup in the HTMl template to look something like: div wicket:id='drawTabsHere' div id=tab1Tab One! input type=text wicket:id=myTag/div div id=tab2Tab Two!/div /div but the rendered HTML would add a hidden input, and some javascript, but would otherwise preserve the rest of it's content, including any wicket:id marked tags. It would go to the browser as something like: div id='drawTabsHere' input type=hidden name=activeTab value=0 div id=tab1Tab One! input type=text name=myTag value=whatever/div div id=tab2Tab Two!/div /div script/* some javascript not worth repeating here *//script I suppose I *might* be able to have the drawTabsHere div NOT encapsulate the tab1 and tab2 div's. That is the direction I will start moving, but is there a way to achieve the above ideal? Since tab1 and 2 are children of the drawTabsHere node, it would be better if the markup reflected that. On 5/21/10, Richard Wilkinson richardjohnwilkin...@googlemail.com wrote: Hi, 1) To get wicket to output a dom id you must call mycomponent.setOutputMarkupId(true). This will output a generated dom id, which you can access in your java code by calling mycomponent.getMarkupId(). Wicket will overrwrite any dom id in your code, if that element is used for a wicket component (ie has wicket:id=myid) 2) Wicket tags like wicket:panel are removed if the application is running in deployment mode, but are rendered if the application is running in development. You can control this explicitly by calling getMarkupSettings().setStripWicketTags(true); in your application init code, or by using Application.get().getMarkupSettings().setStripWicketTags(true); in any wicket code. -- Regards - Richard Wilkinson Developer, jWeekend: OO Java Technologies - Development and Training http://jWeekend.com On 21 May 2010 17:51, Brian Mulholland blmulholl...@gmail.com wrote: Our app will be using ExtJS tab controls. So to make that easier I wrapped the ExtJS code up into a Wicket Panel to hide the complexity of working with ExtJS. The idea is that I would tell my class what the wicket:id of the span/div was to draw the thing to, as well as naming the N subtab id's (these are the HTML ids) so that the class could write out the javascript code to render the tabs from the markup already in the page. So the HTML would look like: div wicket:id='drawTabsHere' div id=tab1Tab One!/div div id=tab2Tab Two!/div /div And the java code would look like: add(new MyTabPanel(drawTabsHere, tab1, tab2)); The premise is REALLY close to working. Here's my problems: 1) The wicket:id= attribute on the div won't copy the id into the markup. I must repeat it in the template div wicket:id='drawTabsHere' id='drawTabsHere'. I tried adding the id via an Attribute Modifier like so: add(new AttributeModifier(id, new Model(renderToID))); But it ignores me. I'd rather not force my developers to repeat the id. How can I accomplish that? 2) More importantly, the rendering of the tabs is malfunctioning. I believe that it is because the panel actually DRAWS the wicket:panel tag around the subtab div's and thus screws up ExtJS. I didn't realize that panels wrote the wicket tags out to the browser until i hit this. I'd always assumed that wicket: tags were for the server's use, and were not rendered. How can I suppress this so that the DOM hierarchy is right for my use? I do have a hidden input tag in the wicket:panel in order to preserve the selected tab so that we preserve it between submits. I tried removing it and it did not help, but cannot remove the wicket:panel without Wicket throwing an exception. -- Brian Mulholland - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org -- Brian Mulholland - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Wicket Panel tag
use a border instead of a panel, thats what borders are for... -igor On Fri, May 21, 2010 at 11:10 AM, Brian Mulholland blmulholl...@gmail.com wrote: Cool, those both helped alot. Unfortunately, they have lead me to realize another major flaw in my plan. Of course the wicket panel is destroying the content in the template. In most cases that is a feature, but in this case the point is for the control to act as a wrapper around other content (both static AND wicket replaced). But of course, the panel is replacing that content. So is there a way to preserve the child content? To illustrate the plan, I want my markup in the HTMl template to look something like: div wicket:id='drawTabsHere' div id=tab1Tab One! input type=text wicket:id=myTag/div div id=tab2Tab Two!/div /div but the rendered HTML would add a hidden input, and some javascript, but would otherwise preserve the rest of it's content, including any wicket:id marked tags. It would go to the browser as something like: div id='drawTabsHere' input type=hidden name=activeTab value=0 div id=tab1Tab One! input type=text name=myTag value=whatever/div div id=tab2Tab Two!/div /div script/* some javascript not worth repeating here *//script I suppose I *might* be able to have the drawTabsHere div NOT encapsulate the tab1 and tab2 div's. That is the direction I will start moving, but is there a way to achieve the above ideal? Since tab1 and 2 are children of the drawTabsHere node, it would be better if the markup reflected that. On 5/21/10, Richard Wilkinson richardjohnwilkin...@googlemail.com wrote: Hi, 1) To get wicket to output a dom id you must call mycomponent.setOutputMarkupId(true). This will output a generated dom id, which you can access in your java code by calling mycomponent.getMarkupId(). Wicket will overrwrite any dom id in your code, if that element is used for a wicket component (ie has wicket:id=myid) 2) Wicket tags like wicket:panel are removed if the application is running in deployment mode, but are rendered if the application is running in development. You can control this explicitly by calling getMarkupSettings().setStripWicketTags(true); in your application init code, or by using Application.get().getMarkupSettings().setStripWicketTags(true); in any wicket code. -- Regards - Richard Wilkinson Developer, jWeekend: OO Java Technologies - Development and Training http://jWeekend.com On 21 May 2010 17:51, Brian Mulholland blmulholl...@gmail.com wrote: Our app will be using ExtJS tab controls. So to make that easier I wrapped the ExtJS code up into a Wicket Panel to hide the complexity of working with ExtJS. The idea is that I would tell my class what the wicket:id of the span/div was to draw the thing to, as well as naming the N subtab id's (these are the HTML ids) so that the class could write out the javascript code to render the tabs from the markup already in the page. So the HTML would look like: div wicket:id='drawTabsHere' div id=tab1Tab One!/div div id=tab2Tab Two!/div /div And the java code would look like: add(new MyTabPanel(drawTabsHere, tab1, tab2)); The premise is REALLY close to working. Here's my problems: 1) The wicket:id= attribute on the div won't copy the id into the markup. I must repeat it in the template div wicket:id='drawTabsHere' id='drawTabsHere'. I tried adding the id via an Attribute Modifier like so: add(new AttributeModifier(id, new Model(renderToID))); But it ignores me. I'd rather not force my developers to repeat the id. How can I accomplish that? 2) More importantly, the rendering of the tabs is malfunctioning. I believe that it is because the panel actually DRAWS the wicket:panel tag around the subtab div's and thus screws up ExtJS. I didn't realize that panels wrote the wicket tags out to the browser until i hit this. I'd always assumed that wicket: tags were for the server's use, and were not rendered. How can I suppress this so that the DOM hierarchy is right for my use? I do have a hidden input tag in the wicket:panel in order to preserve the selected tab so that we preserve it between submits. I tried removing it and it did not help, but cannot remove the wicket:panel without Wicket throwing an exception. -- Brian Mulholland - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org -- Brian Mulholland - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org