Re: Feedback & AjaxButton

2008-01-23 Thread Jean-Baptiste Bellet

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

2008-01-22 Thread Jean-Baptiste Bellet

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

2008-01-22 Thread Jean-Baptiste Bellet

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]