Package com.dragome.forms.bindings.client.form.binding

Source Code of com.dragome.forms.bindings.client.form.binding.FormBinder

package com.dragome.forms.bindings.client.form.binding;

import com.dragome.forms.bindings.client.binding.AbstractBinding;
import com.dragome.forms.bindings.client.binding.Binder;
import com.dragome.forms.bindings.client.binding.BindingBuilderCallback;
import com.dragome.forms.bindings.client.binding.MutableListBindingBuilder;
import com.dragome.forms.bindings.client.binding.MutableValueBindingBuilder;
import com.dragome.forms.bindings.client.form.BindingCallback;
import com.dragome.forms.bindings.client.form.FieldModel;
import com.dragome.forms.bindings.client.form.FormattedFieldModel;
import com.dragome.forms.bindings.client.form.FormattedListFieldModel;
import com.dragome.forms.bindings.client.form.ListFieldModel;

/**
* FormBinder provides a builders to bind widgets to field models.  During the binding process
* any {@link com.pietschy.gwt.pectin.client.binding.BindingBuilderCallback}s installed by plugins will be automatically invoked.
*/
public class FormBinder extends Binder
{
  public <T> MutableValueBindingBuilder<T> bind(final FieldModel<T> field)
  {
    return new MutableValueBindingBuilder<T>(field, new BindingBuilderCallback()
    {
      public void onBindingCreated(AbstractBinding binding, Object target)
      {
        registerDisposableAndUpdateTarget(binding);
        // now notify plugins..
        for (BindingCallback callback : field.getFormModel().getBindingCallbacks())
        {
          callback.onWidgetBinding(binding, field, target);
        }
      }
    });
  }

  public <T> MutableListBindingBuilder<T> bind(final ListFieldModel<T> field)
  {
    return new MutableListBindingBuilder<T>(field, new BindingBuilderCallback()
    {
      public void onBindingCreated(AbstractBinding binding, Object target)
      {
        registerDisposableAndUpdateTarget(binding);
        for (BindingCallback callback : field.getFormModel().getBindingCallbacks())
        {
          callback.onWidgetBinding(binding, field, target);
        }
      }
    });
  }

  public <T> FormattedFieldBindingBuilder<T> bind(final FormattedFieldModel<T> field)
  {
    return new FormattedFieldBindingBuilder<T>(field, new BindingBuilderCallback()
    {
      public void onBindingCreated(AbstractBinding binding, Object target)
      {
        registerDisposableAndUpdateTarget(binding);
        for (BindingCallback callback : field.getFormModel().getBindingCallbacks())
        {
          callback.onWidgetBinding(binding, field, target);
        }
      }
    });
  }

  public <T> FormattedListFieldBindingBuilder<T> bind(final FormattedListFieldModel<T> formattedList)
  {
    return new FormattedListFieldBindingBuilder<T>(formattedList, new BindingBuilderCallback()
    {
      public void onBindingCreated(AbstractBinding binding, Object target)
      {
        registerDisposableAndUpdateTarget(binding);
        for (BindingCallback callback : formattedList.getFormModel().getBindingCallbacks())
        {
          callback.onWidgetBinding(binding, formattedList, target);
        }
      }
    });
  }
}
TOP

Related Classes of com.dragome.forms.bindings.client.form.binding.FormBinder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.