All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.user.client.ui.impl.FormPanelImpl Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
/*
 * Copyright 2008 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.user.client.ui.impl;

import com.google.gwt.dom.client.Element;

/**
 * Implementation class used by {@link com.google.gwt.user.client.ui.FormPanel}.
 */
public class FormPanelImpl {

  /**
   * Gets the response html from the loaded iframe.
   * 
   * @param iframe the iframe from which the response html is to be extracted
   * @return the response html
   */
  public native String getContents(Element iframe) /*-{
    try {
      // Make sure the iframe's window & document are loaded.
      if (!iframe.contentWindow || !iframe.contentWindow.document)
        return null;

      // Get the body's entire inner HTML.
      return iframe.contentWindow.document.body.innerHTML;
    } catch (e) {
      return null;
    }
  }-*/;

  /**
   * Gets the form element's encoding.
   * 
   * @param form the form whose encoding is to be retrieved
   * @return the form's encoding type
   */
  public native String getEncoding(Element form) /*-{
    // We can always get 'enctype', no matter which browser, because we set
    // both 'encoding' and 'enctype' in setEncoding().
    return form.enctype;
  }-*/;

  /**
   * Hooks the iframe's onLoad event and the form's onSubmit event.
   * 
   * @param iframe the iframe whose onLoad event is to be hooked
   * @param form the form whose onSubmit event is to be hooked
   * @param listener the listener to receive notification
   */
  public native void hookEvents(Element iframe, Element form,
      FormPanelImplHost listener) /*-{
    if (iframe) {
      iframe.onload = $entry(function() {
        // If there is no __formAction yet, this is a spurious onload
        // generated when the iframe is first added to the DOM.
        if (!iframe.__formAction)
          return;

        [email protected]::onFrameLoad()();
      });
    }

    form.onsubmit = $entry(function() {
      // Hang on to the form's action url, needed in the
      // onload/onreadystatechange handler.
      if (iframe)
        iframe.__formAction = form.action;
      return [email protected]::onFormSubmit()();
    });
  }-*/;

  /**
   * Resets a form.
   * 
   * @param form the form to be reset
   */
  public native void reset(Element form) /*-{
    form.reset();
  }-*/;

  /**
   * Sets the form element's encoding.
   * 
   * @param form the form whose encoding is to be set
   * @param encoding the new encoding type
   */
  public native void setEncoding(Element form, String encoding) /*-{
    // To be safe, setting both.
    form.enctype = encoding;
    form.encoding = encoding;
  }-*/;

  /**
   * Submits a form.
   * 
   * @param form the form to be submitted
   * @param iframe the iframe that is targetted, or null
   */
  public native void submit(Element form, Element iframe) /*-{
    // Hang on to the form's action url, needed in the
    // onload/onreadystatechange handler.
    if (iframe)
      iframe.__formAction = form.action;
    form.submit();
  }-*/;

  /**
   * Unhooks the iframe's onLoad event.
   * 
   * @param iframe the iframe whose onLoad event is to be unhooked
   * @param form the form whose onSubmit event is to be unhooked
   */
  public native void unhookEvents(Element iframe, Element form) /*-{
    if (iframe)
      iframe.onload = null;
    form.onsubmit = null;
  }-*/;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy