Package er.prototaculous

Source Code of er.prototaculous.AjaxUpdater$Bindings

package er.prototaculous;

import com.webobjects.appserver.WOActionResults;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.appserver.WOResponse;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSMutableArray;

import er.extensions.appserver.ERXResponseRewriter;
import er.extensions.components.ERXComponentUtilities;
import er.extensions.foundation.ERXProperties;

/**
* Wrapper of Prototype's Ajax.Updater
* @see <a href="http://www.prototypejs.org/api/ajax/updater">Prototype's Ajax.Updater Reference</a>
*
* @binding container          The id of the container to be updated
* @binding action            When bound $('container') is replaced with the results of the action
* @binding directActionName  When bound $('container') is replaced with the results of the direct action
* @binding onComplete        Callback @see Prototype Ajax.options
* @binding onSuccess         Callback @see Prototype Ajax.options
* @binding onCreate          Callback @see Prototype Ajax.options
* @binding onException       Callback @see Prototype Ajax.options
* @binding evalScripts       @see Prototype Ajax.Updater
* @binding method            @see Prototype Ajax.Updater
* @property er.prototaculous.useUnobtrusively Support for Unobtrusive Javascript programming. (Turned on by default).
* @author mendis
*/
public abstract class AjaxUpdater extends WOComponent {
  private static boolean useUnobtrusively = ERXProperties.booleanForKeyWithDefault("er.prototaculous.useUnobtrusively", true);
 
    public AjaxUpdater(WOContext context) {
    super(context);
  }

  /*
     * API/Bindings
     */
    public static interface Bindings {
      public static final String container = "container";
      public static final String action = "action";
      public static final String directActionName = "directActionName";
      public static final String evalScripts = "evalScripts";
      public static final String name = "name";
      public static final String onSuccess = "onSuccess";
      public static final String onComplete = "onComplete";
      public static final String onCreate = "onCreate";
      public static final String onException = "onException";
      public static final String method = "method";
    }
   
    // accessors
    public String directActionName() {
      return (String) valueForBinding(Bindings.directActionName);
    }
   
    public WOActionResults action() {
      return (WOActionResults) valueForBinding(Bindings.action);
    }
   
    public String container() {
      return (String) valueForBinding(Bindings.container);
    }
   
    private String _method() {
      return (String) valueForBinding(Bindings.method);
    }
   
    public String method() {
      return (_method() != null) ? _method() : "post";
    }
       
    /*
     * The url of the Ajax.Updater. Defaults to the ref of the AjaxGenericContainer
     * @see AjaxGenericContainer
     */
    protected String url() {
      return "$('" + container() + "').readAttribute('ref')";
    }
   
    /*
     * An array of options for Ajax.Updater
     */
    protected NSArray<String> _options() {
      NSMutableArray _options = new NSMutableArray();
     
      // add options
      if (hasBinding(Bindings.method)) _options.add("method: '" + valueForBinding(Bindings.method) + "'");
      if (hasBinding(Bindings.evalScripts)) _options.add("evalScripts: " + evalScripts());
      if (hasBinding(Bindings.onSuccess)) _options.add("onSuccess: " + valueForBinding(Bindings.onSuccess));
      if (hasBinding(Bindings.onComplete)) _options.add("onComplete: " + valueForBinding(Bindings.onComplete));
      if (hasBinding(Bindings.onCreate)) _options.add("onCreate: " + valueForBinding(Bindings.onCreate));
      if (hasBinding(Bindings.onException)) _options.add("onException: " + valueForBinding(Bindings.onException));

      return _options.immutableClone();
    }
   
    public String options() {
      return _options().componentsJoinedByString(",");
    }
   
    public String onClick() {
      return "new Ajax.Updater('" + container() + "', " + url() + ", {" + options() + "}); return false;";
    }
   
    protected boolean evalScripts() {
      return ERXComponentUtilities.booleanValueForBinding(this, Bindings.evalScripts);
    }
   
    public String elementName() {
      return (hasBinding(Bindings.name)) ? _elementName() : context().elementID();
    }
   
    private String _elementName() {
      return (String) valueForBinding(Bindings.name);
    }
   
    // R&R
    @Override
    public void appendToResponse(WOResponse response, WOContext context) {
      if (!useUnobtrusively) {
        ERXResponseRewriter.addScriptResourceInHead(response, context, "Ajax", "prototype.js");
      } super.appendToResponse(response, context);
    }
}
TOP

Related Classes of er.prototaculous.AjaxUpdater$Bindings

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.