Package er.ajax.mootools

Source Code of er.ajax.mootools.MTJSSlider

package er.ajax.mootools;

import com.webobjects.appserver.WOActionResults;
import com.webobjects.appserver.WOAssociation;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.appserver.WOElement;
import com.webobjects.appserver.WORequest;
import com.webobjects.appserver.WOResponse;
import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSMutableArray;
import com.webobjects.foundation.NSMutableDictionary;

import er.ajax.AjaxDynamicElement;
import er.ajax.AjaxOption;
import er.ajax.AjaxOptions;
import er.ajax.AjaxUtils;
import er.extensions.appserver.ERXWOContext;

/**
* Creates a JavaScript slider
* see the MooTools documentation here: http://mootools.net/docs/more/Drag/Slider
*
* The HTML for the slider will be written like this:
*  >div id="_1Element" class="element"<
*    >div id="_2Knob" class="knob">>/div<
*  >/div<
*
* @binding id - the identifer for the slider's JS var.
* @binding element the identifier to be used for the slider's container
* @binding knob the identifier to be used for the knob's container.
* @binding elementClass the CSS class to be used on the slider's container.
* @binding element - (element) The container element for the slider.
* @binding knob - (element) The handle element for the slider.
* OPTIONS
* @binding snap - (boolean: defaults to false) True if you want the knob to snap to the nearest value.
* @binding offset - (number: defaults to 0) Relative offset for knob position at start.
* @binding range - (mixed: defaults to false) Array of numbers or false. The minimum and maximum limits values the slider will use.
* @binding wheel - (boolean: defaults to false) True if you want the ability to move the knob by mousewheeling.
* @binding steps - (number: defaults to 100) The number of steps the Slider should move/tick.
* @binding mode - (string: defaults to horizontal) The type of Slider can be either 'horizontal' or 'vertical' in movement.
* @binding initialStep - (number: defaults to 0) The step the slider will start at.
*
* OBSERVER
* @binding the id of the element who will update the slider's value with it's value.
* @binding the event to observer on defaults to "change"
*
* This is the layout of the HTML that the
*
*
* @author johnnymiller
*
*/


public class MTJSSlider extends AjaxDynamicElement {
 
    public MTJSSlider(String name, NSDictionary<String, WOAssociation> associations, WOElement children) {
    super(name, associations, children);
  }

  @Override
  public void appendToResponse(WOResponse response, WOContext context) {

    WOComponent component = context.component();
    String sliderID = (String)valueForBinding("id", ERXWOContext.safeIdentifierName(context, true) + "Slider", component);
    String elementID = (String)valueForBinding("element", ERXWOContext.safeIdentifierName(context, true) + "Element", component);
    String knobID = (String)valueForBinding("knob", ERXWOContext.safeIdentifierName(context, true) + "Knob", component);
    response.appendContentString("\n<div");
    appendTagAttributeToResponse(response, "id", elementID);
    appendTagAttributeToResponse(response, "class", valueForBinding("elementClass", component));
    response.appendContentString(">");
    response.appendContentString("\n\t<div");
    appendTagAttributeToResponse(response, "id", knobID);
    appendTagAttributeToResponse(response, "class", valueForBinding("knobClass", component));
    response.appendContentString("></div>");
    response.appendContentString("\n</div>\n");

    AjaxUtils.appendScriptHeader(response);
    response.appendContentString("var ");
    response.appendContentString(sliderID);
    response.appendContentString(";");
    response.appendContentString("\nwindow.addEvent('domready', function() {");
    response.appendContentString("\n\t");
    response.appendContentString(sliderID);
    response.appendContentString(" = new Slider('");
    response.appendContentString(elementID);
    response.appendContentString("', '");
    response.appendContentString(knobID);
    response.appendContentString("', {");
    AjaxOptions._appendToResponse(createOptions(component), response, context);
    response.appendContentString("});");
   
    String observer = stringValueForBinding("observer", component);
    if(observer != null) {
      String observerEvent = (String)valueForBinding("observerEvent", "change", component);
      response.appendContentString("\n\t$('");
      response.appendContentString(observer);
      response.appendContentString("').addEvent('");
      response.appendContentString(observerEvent);
      response.appendContentString("', function(e) { ");
      response.appendContentString("this.set(e.target.value);");
      response.appendContentString("}.bind(");
      response.appendContentString(sliderID);
      response.appendContentString("));");
    }
   
    response.appendContentString("\n});\n");
    AjaxUtils.appendScriptFooter(response);
    super.appendToResponse(response, context);

 
 
  @SuppressWarnings({ "rawtypes", "unchecked" })
  protected NSMutableDictionary createOptions(WOComponent component) {
     
    NSMutableArray ajaxOptionsArray = new NSMutableArray();
      ajaxOptionsArray.addObject(new AjaxOption("snap", AjaxOption.BOOLEAN));
      ajaxOptionsArray.addObject(new AjaxOption("offset", AjaxOption.NUMBER));
      ajaxOptionsArray.addObject(new AjaxOption("range", AjaxOption.ARRAY));
      ajaxOptionsArray.addObject(new AjaxOption("wheel", AjaxOption.BOOLEAN));
      ajaxOptionsArray.addObject(new AjaxOption("steps", AjaxOption.NUMBER));
      ajaxOptionsArray.addObject(new AjaxOption("mode", AjaxOption.STRING));
      ajaxOptionsArray.addObject(new AjaxOption("onChange", AjaxOption.SCRIPT));
      ajaxOptionsArray.addObject(new AjaxOption("onComplete", AjaxOption.SCRIPT));
      ajaxOptionsArray.addObject(new AjaxOption("onTick", AjaxOption.SCRIPT));
    NSMutableDictionary options = AjaxOption.createAjaxOptionsDictionary(ajaxOptionsArray, component, associations());
    return options;

 

  @Override
  protected void addRequiredWebResources(WOResponse response,
      WOContext context) {
    MTAjaxUtils.addScriptResourceInHead(context, context.response(), "MooTools", MTAjaxUtils.MOOTOOLS_CORE_JS);
    MTAjaxUtils.addScriptResourceInHead(context, context.response(), "MooTools", MTAjaxUtils.MOOTOOLS_MORE_JS);
  }

  @Override
  public WOActionResults handleRequest(WORequest request, WOContext context) {
    // TODO Auto-generated method stub
    return null;
  }

   

}
TOP

Related Classes of er.ajax.mootools.MTJSSlider

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.