Re: How to determine which behavior corresponds to the currently handled request target

2009-07-27 Thread Igor Vaynberg
you can always override getcallbackurl() and append a marker parameter
you can use to differentiate between the different modes.

-igor

On Mon, Jul 27, 2009 at 12:31 PM, Vladimir K wrote:
>
> I'm trying to add AjaxFormComponentUpdating behavior to FormComponentPanel.
> The latter is inherintly  not suited for Ajax requests. So I have to use
> some workarounds to update model of FormComponentPanel by ajax update on
> "onblur" js event on inner input, see code posted here. It works for now but
> I'm afraid I should bypass updating of model when whole form is submitted
> via ajax. So I'm trying to figure out what particular behavior is in
> progress.
>
> From the other hand you probably know different way how to add
> AjaxFormComponentUpdatingBehaviour to DateField component. Any thoughts are
> welcome.
>
>
> igor.vaynberg wrote:
>>
>> you can use AjaxRequestTarget.get() to see if an ajax request is being
>> processed.
>>
>> -igor
>>
>> On Mon, Jul 27, 2009 at 5:41 AM, Vladimir K wrote:
>>>
>>> Could anyone shed light on that?
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html
>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>
>>>
>>> -
>>> 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
>>
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24686879.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> -
> 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: How to determine which behavior corresponds to the currently handled request target

2009-07-27 Thread Vladimir K

I'm trying to add AjaxFormComponentUpdating behavior to FormComponentPanel.
The latter is inherintly  not suited for Ajax requests. So I have to use
some workarounds to update model of FormComponentPanel by ajax update on
"onblur" js event on inner input, see code posted here. It works for now but
I'm afraid I should bypass updating of model when whole form is submitted
via ajax. So I'm trying to figure out what particular behavior is in
progress.

>From the other hand you probably know different way how to add
AjaxFormComponentUpdatingBehaviour to DateField component. Any thoughts are
welcome.


igor.vaynberg wrote:
> 
> you can use AjaxRequestTarget.get() to see if an ajax request is being
> processed.
> 
> -igor
> 
> On Mon, Jul 27, 2009 at 5:41 AM, Vladimir K wrote:
>>
>> Could anyone shed light on that?
>> --
>> View this message in context:
>> http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> -
>> 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
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24686879.html
Sent from the Wicket - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: How to determine which behavior corresponds to the currently handled request target

2009-07-27 Thread Igor Vaynberg
you can use AjaxRequestTarget.get() to see if an ajax request is being
processed.

-igor

On Mon, Jul 27, 2009 at 5:41 AM, Vladimir K wrote:
>
> Could anyone shed light on that?
> --
> View this message in context: 
> http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> -
> 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: How to determine which behavior corresponds to the currently handled request target

2009-07-27 Thread Vladimir K

Could anyone shed light on that?
-- 
View this message in context: 
http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html
Sent from the Wicket - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



How to determine which behavior corresponds to the currently handled request target

2009-07-23 Thread Vladimir Kovalyuk
I'm trying to design a joda time based DateTime field. There are two reasons
 - I use joda time only
 - I have to wire tree components - start date, finish date and duration, so
I have to add

I managed to get it working but I'm concerned about the approach I took. So
please critics are welcome. Below is the source code of the component.

My question is about the isAjaxRequest() method. I believe I should check
whether the AjaxFormComponentUpdatingBehavior's request target is handled.
But I don't know how. Please suggest.

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.behavior.IBehavior;
import org.apache.wicket.datetime.DateConverter;
import org.apache.wicket.datetime.StyleDateConverter;
import org.apache.wicket.datetime.markup.html.form.DateTextField;
import org.apache.wicket.extensions.yui.calendar.DateField;
import org.apache.wicket.markup.html.form.FormComponentPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.protocol.http.WebRequest;
import org.joda.time.DateTime;

public class JodaDateField extends FormComponentPanel {

protected class LocalDateField extends DateField {

protected final class LocalDateTextField extends DateTextField {
public LocalDateTextField(String id, IModel model,
DateConverter converter) {
super(id, model, converter);
}

@Override
protected void onModelChanged() {
super.onModelChanged();
if (isAjaxRequest()) {
Date date = getModelObject();
LocalDateField.this.setModelObject(date);
}
}
}

public LocalDateField(String id, IModel model) {
super(id, model);
}

@Override
protected DateTextField newDateTextField(String id, PropertyModel
dateFieldModel) {
@SuppressWarnings("unchecked")
IModel model = dateFieldModel;
return new LocalDateTextField(id, model, new
StyleDateConverter(true));
}

@Override
protected void onModelChanged() {
super.onModelChanged();
if (isAjaxRequest()) {
Date date = getModelObject();
JodaDateField.this.setModelObject(date == null ? null : new
DateTime(date));
}
}
}

private DateField dateField;;

public JodaDateField(String id, IModel model) {
super(id, model);

dateField = new LocalDateField("field", new Model());
add(dateField);
}

@Override
public Component add(IBehavior... behaviors) {
List correct = new ArrayList();
for (IBehavior behavior : behaviors) {
if (behavior instanceof AjaxFormComponentUpdatingBehavior)
dateField.get("date").add(behavior);
else
correct.add(behavior);
}
return super.add(correct.toArray(new IBehavior[correct.size()]));
}

@Override
protected void convertInput() {
Date date = dateField.getConvertedInput();
setConvertedInput(date == null ? null : new DateTime(date));
}

@Override
public String getInput() {
return dateField.getInput();
}

private boolean isAjaxRequest() {
return getRequest() instanceof WebRequest && ((WebRequest)
getRequest()).isAjax();
}

@Override
protected void onBeforeRender() {
DateTime date = getModelObject();
dateField.setDate(date == null ? null : date.toDate());
dateField.setRequired(isRequired());
super.onBeforeRender();
}
}