| /* |
| * 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}. |
| * |
| * <p>Deprecated, may be inlined into FormPanel as it has no other implementations.</p> |
| */ |
| @Deprecated |
| 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; |
| |
| listener.@com.google.gwt.user.client.ui.impl.FormPanelImplHost::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 listener.@com.google.gwt.user.client.ui.impl.FormPanelImplHost::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 <code>null</code> |
| */ |
| 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; |
| }-*/; |
| } |