Re: Feedback & AjaxButton
It works ! Thanks a lot Vincent :) jb Vincent Demay wrote: Hi Jean-Baptiste Jean-Baptiste Bellet a écrit : Hello all, This is my first wicket message, so first of all, I would like to gongrats the whole team for the great job ! Now, my problem : I have created a NewFeedbackPanel which extends FeedbackPanel and override OnBeforeRender(). This NewFeedbackPanel is created into a class and added to a target : final NewFeedbackPanel indicator = new NewFeedbackPanel("indicator", 3, true); final NewAjaxButton link = new NewAjaxButton(DOWNLOAD_NEW, new ResourceModel("preferences.downloadNew")) { @Override public void onClick(AjaxRequestTarget target) { .. // log successful message and refresh target feedback this.info(getLocalizer().getString("preferences.downloadSuccess", this)); target.addComponent(indicator); target.addComponent(PhoneDetails.this); } }; add(link); add(indicator); When I test, i can't see any feedback, and the method OnBeforeRender() of the class NewFeedbackPanel is never called. Any idea ? Thanks, jb Code for NewFeedbackPanel.java : public class NewFeedbackPanel extends FeedbackPanel { private static final int DEFAULT_TIME = 1000; private boolean _blocker; private int _displayTime; public NewFeedbackPanel(String id) { this(id, DEFAULT_TIME, false); } public NewFeedbackPanel(String id, int displayTime) { this(id, displayTime, false); } public NewFeedbackPanel(String id, int displayTime, boolean blocker) { super(id); _blocker = blocker; setOutputMarkupPlaceholderTag(true); add(HeaderContributor.forCss(NewFeedbackPanel.class, "feedback.css")); setVisible(false); Here, you feedback is set as not visible. If you take a look into Component#internalBeforeRender, you can see that a not visible component never call onBeforeRender method. So you need to override Component#callOnBeforeRenderIfNotVisible to return true in order to evaluate you code in onBeforeRender _displayTime = displayTime > 0 ? displayTime : DEFAULT_TIME; if (_blocker) { add(new AttributeAppender("class", new Model("hidder"), " ")); } } @Override protected void onBeforeRender() { super.onBeforeRender(); IRequestTarget target = RequestCycle.get().getRequestTarget(); if (anyMessage()) { if (target instanceof AjaxRequestTarget) { String javascript = "window.setTimeout(function(){window.document.getElementById('" + getMarkupId() + "').style.display = 'none'}, " + _displayTime + ");"; ((AjaxRequestTarget) target).appendJavascript(javascript); } } else { setVisible(false); } } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Cheers -- Vincent Demay - 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]
Re: Feedback & AjaxButton
I've done this, isn't it ? just below the line this.info(getLocalizer().getString("preferences.downloadSuccess", this)); jb Gerolf Seitz wrote: you need to add the feedbackpanel to the ajaxrequesttarget like: target.addComponent(indicator); gerolf On Jan 22, 2008 12:20 PM, Jean-Baptiste Bellet <[EMAIL PROTECTED]> wrote: Hello all, This is my first wicket message, so first of all, I would like to gongrats the whole team for the great job ! Now, my problem : I have created a NewFeedbackPanel which extends FeedbackPanel and override OnBeforeRender(). This NewFeedbackPanel is created into a class and added to a target : final NewFeedbackPanel indicator = new NewFeedbackPanel("indicator", 3, true); final NewAjaxButton link = new NewAjaxButton(DOWNLOAD_NEW, new ResourceModel("preferences.downloadNew")) { @Override public void onClick(AjaxRequestTarget target) { .. // log successful message and refresh target feedback this.info(getLocalizer().getString(" preferences.downloadSuccess", this)); target.addComponent(indicator); target.addComponent(PhoneDetails.this); } }; add(link); add(indicator); When I test, i can't see any feedback, and the method OnBeforeRender() of the class NewFeedbackPanel is never called. Any idea ? Thanks, jb Code for NewFeedbackPanel.java : public class NewFeedbackPanel extends FeedbackPanel { private static final int DEFAULT_TIME = 1000; private boolean _blocker; private int _displayTime; public NewFeedbackPanel(String id) { this(id, DEFAULT_TIME, false); } public NewFeedbackPanel(String id, int displayTime) { this(id, displayTime, false); } public NewFeedbackPanel(String id, int displayTime, boolean blocker) { super(id); _blocker = blocker; setOutputMarkupPlaceholderTag(true); add(HeaderContributor.forCss(NewFeedbackPanel.class, "feedback.css")); setVisible(false); _displayTime = displayTime > 0 ? displayTime : DEFAULT_TIME; if (_blocker) { add(new AttributeAppender("class", new Model("hidder"), " ")); } } @Override protected void onBeforeRender() { super.onBeforeRender(); IRequestTarget target = RequestCycle.get().getRequestTarget(); if (anyMessage()) { if (target instanceof AjaxRequestTarget) { String javascript = "window.setTimeout(function(){window.document.getElementById('" + getMarkupId() + "').style.display = 'none'}, " + _displayTime + ");"; ((AjaxRequestTarget) target).appendJavascript(javascript); } } else { setVisible(false); } } } - 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]
Feedback & AjaxButton
Hello all, This is my first wicket message, so first of all, I would like to gongrats the whole team for the great job ! Now, my problem : I have created a NewFeedbackPanel which extends FeedbackPanel and override OnBeforeRender(). This NewFeedbackPanel is created into a class and added to a target : final NewFeedbackPanel indicator = new NewFeedbackPanel("indicator", 3, true); final NewAjaxButton link = new NewAjaxButton(DOWNLOAD_NEW, new ResourceModel("preferences.downloadNew")) { @Override public void onClick(AjaxRequestTarget target) { .. // log successful message and refresh target feedback this.info(getLocalizer().getString("preferences.downloadSuccess", this)); target.addComponent(indicator); target.addComponent(PhoneDetails.this); } }; add(link); add(indicator); When I test, i can't see any feedback, and the method OnBeforeRender() of the class NewFeedbackPanel is never called. Any idea ? Thanks, jb Code for NewFeedbackPanel.java : public class NewFeedbackPanel extends FeedbackPanel { private static final int DEFAULT_TIME = 1000; private boolean _blocker; private int _displayTime; public NewFeedbackPanel(String id) { this(id, DEFAULT_TIME, false); } public NewFeedbackPanel(String id, int displayTime) { this(id, displayTime, false); } public NewFeedbackPanel(String id, int displayTime, boolean blocker) { super(id); _blocker = blocker; setOutputMarkupPlaceholderTag(true); add(HeaderContributor.forCss(NewFeedbackPanel.class, "feedback.css")); setVisible(false); _displayTime = displayTime > 0 ? displayTime : DEFAULT_TIME; if (_blocker) { add(new AttributeAppender("class", new Model("hidder"), " ")); } } @Override protected void onBeforeRender() { super.onBeforeRender(); IRequestTarget target = RequestCycle.get().getRequestTarget(); if (anyMessage()) { if (target instanceof AjaxRequestTarget) { String javascript = "window.setTimeout(function(){window.document.getElementById('" + getMarkupId() + "').style.display = 'none'}, " + _displayTime + ");"; ((AjaxRequestTarget) target).appendJavascript(javascript); } } else { setVisible(false); } } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]