Package er.extensions.components.html5

Source Code of er.extensions.components.html5.ERXWOInput

package er.extensions.components.html5;

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.appserver._private.WODynamicElementCreationException;
import com.webobjects.appserver._private.WOInput;
import com.webobjects.foundation.NSDictionary;

import er.extensions.appserver.ERXResponse;
import er.extensions.foundation.ERXKeyValueCodingUtilities;
import er.extensions.foundation.ERXPatcher;

/**
* <span class="en">
*
* </span>
*
* <span class="ja">
* WOInput HTML5 拡張
* </span>
*
* @author ishimoto
*
*/
public class ERXWOInput extends WOInput {

  //********************************************************************
  //  Binding Properties
  //********************************************************************

  protected WOAssociation _readonly;
  protected WOAssociation _required;
  protected WOAssociation _blankIsNull;

  //********************************************************************
  //  Constructor
  //********************************************************************

  public ERXWOInput(String tagname, NSDictionary<String, WOAssociation> nsdictionary, WOElement woelement) {
    super(tagname, nsdictionary, woelement);
    if(_value == null || !_value.isValueSettable())
      throw new WODynamicElementCreationException("<" + getClass().getName() + "> 'value' attribute not present or is a constant");

    _readonly = _associations.removeObjectForKey("readonly");
    _required = _associations.removeObjectForKey("required");

    _blankIsNull = _associations.removeObjectForKey("blankIsNull");
  }

  //********************************************************************
  //  Methods
  //********************************************************************

  @Override
  protected boolean isDisabledInContext(WOContext context) {
    WOAssociation disabled = (WOAssociation) ERXKeyValueCodingUtilities.privateValueForKey(this, "_disabled");
    return disabled != null && disabled.booleanValueInComponent(context.component());
  }

  protected boolean isReadonlyInContext(WOContext context) {
    return _readonly != null && _readonly.booleanValueInComponent(context.component());
  }

  protected boolean isRequiredInContext(WOContext context) {
    return _required != null && _required.booleanValueInComponent(context.component());
  }

  @Override
  protected void _appendCloseTagToResponse(WOResponse woresponse, WOContext wocontext) {
  }

  //********************************************************************
  //  RR - Methods
  //********************************************************************

  @Override
  public void takeValuesFromRequest(WORequest worequest, WOContext wocontext) {
    WOComponent component = wocontext.component();
    if(!isDisabledInContext(wocontext) && wocontext.wasFormSubmitted() && !isReadonlyInContext(wocontext)) {
      String name = nameInContext(wocontext, component);
      if(name != null) {
        String stringValue;
        boolean blankIsNull = _blankIsNull == null || _blankIsNull.booleanValueInComponent(component);
        if (blankIsNull) {
          stringValue = worequest.stringFormValueForKey(name);
        }
        else {
          Object objValue = worequest.formValueForKey(name);
          stringValue = (objValue == null) ? null : objValue.toString();
        }
        Object result = stringValue;
        _value.setValue(result, component);
      }
    }
  }

  /**
   * <span class="ja">
   * XML 互換性の為にオーバライド
   * </span>
   */
  @Override
  public void appendToResponse(WOResponse woresponse, WOContext wocontext) {
    WOResponse newResponse = ERXPatcher.DynamicElementsPatches.cleanupXHTML ? new ERXResponse() : woresponse;
    super.appendToResponse(newResponse, wocontext);

    ERXPatcher.DynamicElementsPatches.processResponse(this, newResponse, wocontext, 0, nameInContext(wocontext, wocontext.component()));
    if (ERXPatcher.DynamicElementsPatches.cleanupXHTML) {
      woresponse.appendContentString(newResponse.contentString());
    }
  }

}
TOP

Related Classes of er.extensions.components.html5.ERXWOInput

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.