Thanks. :)
On Sun, May 18, 2008 at 10:08 AM, Johan Compagner <[EMAIL PROTECTED]> wrote: > No no bug just java doc isnt clear enough i guess, but it is not > really wrong.. What is after render? Both are true, both are called > after the component is rendered only one a bit later then the other. I > guess the javadoc of the component should state that this is after the > page is rendered > > On 5/18/08, Eyal Golan <[EMAIL PROTECTED]> wrote: > > ok. > > But, looking at the Javadoc, this is what I see: > > In AbstractBehavior: > > /** > > * Called when a component that has this behavior coupled was > rendered. > > * > > * @param component > > * the component that has this behavior coupled > > */ > > public void onRendered(Component component) > > { > > } > > > > And in Component: > > /** > > * Called just after a component is rendered. > > */ > > protected void onAfterRender() > > { > > setFlag(FLAG_AFTER_RENDERING, false); > > } > > > > It looks to me that according to the API Javadoc the output should be > same. > > But it isn't. > > Am I misunderstanding something or there's a minor bug? > > > > On Sat, May 17, 2008 at 1:45 PM, Johan Compagner <[EMAIL PROTECTED]> > > wrote: > > > >> No the after render of a component is called after the page render to > >> clean up stuff. > >> Just as onBeforeRender is called before the page is starting to render > >> > >> On 5/17/08, Eyal Golan <[EMAIL PROTECTED]> wrote: > >> > Isn't this is what I did? > >> > Anyway, here's an example of what I get. > >> > First: the Java code: > >> > public final class TestButtonPage extends WebPage { > >> > public TestButtonPage() { > >> > add(new ExtendingButton("extendingButton")); > >> > Button other = new Button("behavioralButton"); > >> > other.add(new MyBehavior()); > >> > add(other); > >> > } > >> > > >> > class ExtendingButton extends Button { > >> > private static final long serialVersionUID = 1L; > >> > > >> > public ExtendingButton(String id) { > >> > super(id); > >> > } > >> > > >> > @Override > >> > protected void onAfterRender() { > >> > > >> > getResponse().write("<span>ExtendingButton.onAfterRender()</span>"); > >> > super.onAfterRender(); > >> > } > >> > } > >> > > >> > class MyBehavior extends AbstractBehavior { > >> > private static final long serialVersionUID = 1L; > >> > > >> > @Override > >> > public void onRendered(Component component) { > >> > > >> > > >> > component.getResponse().write("<span>AbstractBehavior.onRendered(...)</span>"); > >> > } > >> > } > >> > } > >> > > >> > This is the markup: > >> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > >> > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > >> > <html xmlns="http://www.w3.org/1999/xhtml" > >> > xmlns:wicket="http://wicket.apache.org/" xml:lang="en" lang="en"> > >> > <head> > >> > <title>Button Test</title> > >> > </head> > >> > <body> > >> > <button wicket:id="extendingButton">Extending Button</button><br/> > >> > <button wicket:id="behavioralButton">Behavioral Button</button><br/> > >> > </body> > >> > <br /> > >> > <span>This is just before the html closing tag</span> > >> > <br /> > >> > </html> > >> > > >> > And this is the output (taken from view source in my FF browser): > >> > > >> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > >> > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > >> > <html xmlns="http://www.w3.org/1999/xhtml" > >> > xmlns:wicket="http://wicket.apache.org/" xml:lang="en" > lang="en"> > >> > <head> > >> > <title>Button Test</title> > >> > </head> > >> > <body> > >> > <button id="extendingButton1" name="extendingButton" > >> > wicket:id="extendingButton">Extending Button</button><br/> > >> > <button id="behavioralButton2" name="behavioralButton" > >> > wicket:id="behavioralButton">Behavioral > >> > Button</button><span>AbstractBehavior.onRendered(...)</span><br/> > >> > </body> > >> > <br /> > >> > <span>This is just before the html closing tag</span> > >> > <br /> > >> > > >> > </html> > >> > > >> > <span>ExtendingButton.onAfterRender()</span> > >> > > >> > As you can see, the behavior put the <span> tag just after the button, > >> but > >> > the "extendingButton" put the <span> tag after the closing tag of the > >> html. > >> > > >> > Is this the correct behavior? > >> > > >> > thanks > >> > > >> > On Thu, May 15, 2008 at 4:38 PM, Johan Compagner < > [EMAIL PROTECTED]> > >> > wrote: > >> > > >> >> get the components markupid from the component itself. > >> >> > >> >> johan > >> >> > >> >> > >> >> On Thu, May 15, 2008 at 3:03 PM, Eyal Golan <[EMAIL PROTECTED]> > wrote: > >> >> > >> >> > thanks, > >> >> > that's exactly what I did. > >> >> > I add to my component (button) an AbstarctBehavior, which is an > >> >> > IHeaderContributor. > >> >> > I even override renderHead: > >> >> > @Override > >> >> > public void renderHead(IHeaderResponse response) { > >> >> > > >> >> > > >> > response.renderCSSReference("/eurekify/style/button/EurekifyButton.css"); > >> >> > > >> >> > > >> >> > > >> >> > >> > response.renderJavascriptReference("/eurekify/style/button/EurekifyButton.js"); > >> >> > // response.renderJavascriptReference(new > >> >> > JavascriptResourceReference( > >> >> > // EurekifyButtonBehavior.class, > "resizeScript.js")); > >> >> > } > >> >> > > >> >> > The script I am adding to each button comes from a utility class: > >> >> > static String getResizeScript(String markupId) { > >> >> > StringBuilder strBuilder = new StringBuilder(); > >> >> > strBuilder.append("<script language=\"javascript\">"); > >> >> > strBuilder.append("document.getElementById('btnObj_"); > >> >> > strBuilder.append(markupId); > >> >> > strBuilder.append("').style.width = calcBtnSize('"); > >> >> > strBuilder.append(markupId).append("')"); > >> >> > strBuilder.append("</script>"); > >> >> > return strBuilder.toString(); > >> >> > } > >> >> > > >> >> > This is the script that I mentioned in my first question. > >> >> > > >> >> > Again: > >> >> > If I call this script in the Button class, in the onAfterRender() > >> >> > method, > >> >> > it > >> >> > is added to the end of the output HTML. > >> >> > If I call this in the behavior, in the onRendered(Component > >> component), > >> >> it > >> >> > is added just after the </button>. > >> >> > > >> >> > I did something like this in the onload script: > >> >> > window.onload = function(id) { > >> >> > document.getElementById('btnObj_'+id).style.width = function(id) > >> >> > {calcBtnSize(id)}; > >> >> > } > >> >> > > >> >> > firebug says that it can't find > document.getElementById('btnObj_'+id) > >> >> > ... > >> >> > On Thu, May 15, 2008 at 3:50 PM, Johan Compagner < > >> [EMAIL PROTECTED]> > >> >> > wrote: > >> >> > > >> >> > > you can also do it on component > >> >> > > public void renderHead(final HtmlHeaderContainer container) > >> >> > > > >> >> > > or let the component implement IHeaderContributor > >> >> > > > >> >> > > i guess that renderHead(final HtmlHeaderContainer container) > >> shouldnt > >> >> be > >> >> > > public but more protected or final.. > >> >> > > > >> >> > > johan > >> >> > > > >> >> > > > >> >> > > On Thu, May 15, 2008 at 2:44 PM, Eyal Golan <[EMAIL PROTECTED]> > >> >> wrote: > >> >> > > > >> >> > > > ok. thank, I'll try it (though I have never written JavaScript > >> till > >> >> > > > a > >> >> > few > >> >> > > > days ago...) > >> >> > > > BTW, why is the difference between the overriding method and > the > >> >> > behavior > >> >> > > > method? > >> >> > > > > >> >> > > > On Thu, May 15, 2008 at 2:52 PM, Johan Compagner < > >> >> [EMAIL PROTECTED] > >> >> > > > >> >> > > > wrote: > >> >> > > > > >> >> > > > > use a behavior that adds an onDocumentLoad/Ready script to > the > >> >> > browser > >> >> > > > > > >> >> > > > > On Thu, May 15, 2008 at 12:35 PM, Eyal Golan < > >> [EMAIL PROTECTED]> > >> >> > > wrote: > >> >> > > > > > >> >> > > > > > Hello, > >> >> > > > > > I have a MyButton that extends Button. > >> >> > > > > > I have a JavaScript that I need to ad to the output markup > >> after > >> >> > the > >> >> > > > > > button's markup. > >> >> > > > > > I'm trying to do this with two differnet options: > >> >> > > > > > Either I Override onAfterRender in MyButton: > >> >> > > > > > @Override > >> >> > > > > > protected void onAfterRender() { > >> >> > > > > > if (isVisible()) { > >> >> > > > > > > >> >> > > getResponse().write(Consts.getResizeScript(getMarkupId())); > >> >> > > > > > } > >> >> > > > > > super.onAfterRender(); > >> >> > > > > > } > >> >> > > > > > > >> >> > > > > > Or, I add to the button a behavior and write this: > >> >> > > > > > @Override > >> >> > > > > > public void onRendered(Component component) { > >> >> > > > > > if (component.isVisible()) { > >> >> > > > > > > >> >> > > > > > > >> >> > > > > > > >> >> > > > > > >> >> > > > > >> >> > > > >> >> > > >> >> > >> > component.getResponse().write(Consts.getResizeScript(component.getMarkupId())); > >> >> > > > > > } > >> >> > > > > > > >> >> > > > > > } > >> >> > > > > > > >> >> > > > > > Now, the situation is like this: > >> >> > > > > > Using the first option (override in the component), the > >> >> > > > > > script > >> >> > > > > > is > >> >> > > added > >> >> > > > > to > >> >> > > > > > the end of the html. Just after the </html> > >> >> > > > > > Using the second option (the behavior), the script is added > >> just > >> >> > > after > >> >> > > > > the > >> >> > > > > > close tag of the button </button>. > >> >> > > > > > > >> >> > > > > > Using FF, all is ok, but in IE7, there's a problem in > >> >> > > > > > calculating > >> >> > the > >> >> > > > > size > >> >> > > > > > and the button is not shown correctly. > >> >> > > > > > > >> >> > > > > > What causes the differences? and how can I manipulate the > >> >> behavior > >> >> > to > >> >> > > > > work > >> >> > > > > > like option 1 ? > >> >> > > > > > > >> >> > > > > > Thanks very much... > >> >> > > > > > > >> >> > > > > > -- > >> >> > > > > > Eyal Golan > >> >> > > > > > [EMAIL PROTECTED] > >> >> > > > > > > >> >> > > > > > Visit: http://jvdrums.sourceforge.net/ > >> >> > > > > > > >> >> > > > > > >> >> > > > > >> >> > > > > >> >> > > > > >> >> > > > -- > >> >> > > > Eyal Golan > >> >> > > > [EMAIL PROTECTED] > >> >> > > > > >> >> > > > Visit: http://jvdrums.sourceforge.net/ > >> >> > > > > >> >> > > > >> >> > > >> >> > > >> >> > > >> >> > -- > >> >> > Eyal Golan > >> >> > [EMAIL PROTECTED] > >> >> > > >> >> > Visit: http://jvdrums.sourceforge.net/ > >> >> > > >> >> > >> > > >> > > >> > > >> > -- > >> > Eyal Golan > >> > [EMAIL PROTECTED] > >> > > >> > Visit: http://jvdrums.sourceforge.net/ > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > > > > > > -- > > Eyal Golan > > [EMAIL PROTECTED] > > > > Visit: http://jvdrums.sourceforge.net/ > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Eyal Golan [EMAIL PROTECTED] Visit: http://jvdrums.sourceforge.net/