123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /*
- @ITMillApache2LicenseForJavaFiles@
- */
-
- package com.itmill.toolkit.terminal.gwt.client.ui;
-
- import com.google.gwt.user.client.DOM;
- import com.google.gwt.user.client.Element;
- import com.google.gwt.user.client.ui.ComplexPanel;
- import com.google.gwt.user.client.ui.Widget;
- import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
- import com.itmill.toolkit.terminal.gwt.client.Container;
- import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener;
- import com.itmill.toolkit.terminal.gwt.client.IErrorMessage;
- import com.itmill.toolkit.terminal.gwt.client.Paintable;
- import com.itmill.toolkit.terminal.gwt.client.UIDL;
- import com.itmill.toolkit.terminal.gwt.client.Util;
-
- public class IForm extends ComplexPanel implements Paintable,
- ContainerResizedListener {
-
- public static final String CLASSNAME = "i-form";
-
- private Container lo;
- private Element legend = DOM.createLegend();
- private Element caption = DOM.createSpan();
- private Element errorIndicatorElement = DOM.createDiv();
- private Element desc = DOM.createDiv();
- private Icon icon;
- private IErrorMessage errorMessage = new IErrorMessage();
-
- private Element fieldContainer = DOM.createDiv();
-
- private Element footerContainer = DOM.createDiv();
-
- private Container footer;
-
- public IForm() {
- setElement(DOM.createFieldSet());
- setStyleName(CLASSNAME);
- DOM.appendChild(getElement(), legend);
- DOM.appendChild(legend, caption);
- DOM.setElementProperty(errorIndicatorElement, "className",
- "i-errorindicator");
- DOM.setStyleAttribute(errorIndicatorElement, "display", "none");
- DOM.setInnerText(errorIndicatorElement, " "); // needed for IE
- DOM.setElementProperty(desc, "className", "i-form-description");
- DOM.appendChild(getElement(), desc);
- DOM.appendChild(getElement(), fieldContainer);
- errorMessage.setVisible(false);
- errorMessage.setStyleName(CLASSNAME + "-errormessage");
- DOM.appendChild(getElement(), errorMessage.getElement());
- DOM.appendChild(getElement(), footerContainer);
- }
-
- public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
- if (client.updateComponent(this, uidl, false)) {
- return;
- }
-
- boolean legendEmpty = true;
- if (uidl.hasAttribute("caption")) {
- DOM.setInnerText(caption, uidl.getStringAttribute("caption"));
- legendEmpty = false;
- } else {
- DOM.setInnerText(caption, "");
- }
- if (uidl.hasAttribute("icon")) {
- if (icon == null) {
- icon = new Icon(client);
- DOM.insertChild(legend, icon.getElement(), 0);
- }
- icon.setUri(uidl.getStringAttribute("icon"));
- legendEmpty = false;
- } else {
- if (icon != null) {
- DOM.removeChild(legend, icon.getElement());
- }
- }
- if (legendEmpty) {
- DOM.setStyleAttribute(legend, "display", "none");
- } else {
- DOM.setStyleAttribute(legend, "display", "");
- }
-
- if (uidl.hasAttribute("error")) {
- final UIDL errorUidl = uidl.getErrors();
- errorMessage.updateFromUIDL(errorUidl);
- errorMessage.setVisible(true);
-
- } else {
- errorMessage.setVisible(false);
- }
-
- if (uidl.hasAttribute("description")) {
- DOM.setInnerHTML(desc, uidl.getStringAttribute("description"));
- } else {
- DOM.setInnerHTML(desc, "");
- }
-
- iLayout();
-
- final UIDL layoutUidl = uidl.getChildUIDL(0);
- Container newLo = (Container) client.getPaintable(layoutUidl);
- if (lo == null) {
- lo = newLo;
- add((Widget) lo, fieldContainer);
- } else if (lo != newLo) {
- client.unregisterPaintable(lo);
- remove((Widget) lo);
- lo = newLo;
- add((Widget) lo, fieldContainer);
- }
- lo.updateFromUIDL(layoutUidl, client);
-
- if (uidl.getChildCount() > 1) {
- // render footer
- Container newFooter = (Container) client.getPaintable(uidl
- .getChildUIDL(1));
- if (footer == null) {
- add((Widget) newFooter, footerContainer);
- footer = newFooter;
- } else if (newFooter != footer) {
- remove((Widget) footer);
- client.unregisterPaintable(footer);
- add((Widget) newFooter, footerContainer);
- }
- footer = newFooter;
- footer.updateFromUIDL(uidl.getChildUIDL(1), client);
- } else {
- if (footer != null) {
- remove((Widget) footer);
- client.unregisterPaintable(footer);
- }
- }
- }
-
- public void iLayout() {
- Util.runDescendentsLayout(this);
- }
-
- }
|