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
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]
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]
Re: Feedback AjaxButton
oops, my bad. is was looking for a feedback variable ;) gerolf On Jan 22, 2008 1:18 PM, Jean-Baptiste Bellet [EMAIL PROTECTED] wrote: 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]
Re: Feedback AjaxButton
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]
Re: Feedback AjaxButton
Jean-Baptiste Bellet wrote: I guess that you need call indicator.setOutputMarkupId(true) before adding it to page. Regards, Sergiy. *- [EMAIL PROTECTED] http://es.os2.ru/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Feedback AjaxButton
not only setOutputMarkupId(true), but rather .setOutputMarkupPlaceHolderTag(true) otherwise an invisible component can't be made visible via ajax updates. gerolf On Jan 22, 2008 9:30 PM, Sergiy Yevtushenko [EMAIL PROTECTED] wrote: Jean-Baptiste Bellet wrote: I guess that you need call indicator.setOutputMarkupId(true) before adding it to page. Regards, Sergiy. *- [EMAIL PROTECTED] http://es.os2.ru/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]