diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-11-08 11:49:28 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-11-08 11:49:28 +0000 |
commit | 9e15ca6dd44f5d860ec3514bceca34bc58cb87ad (patch) | |
tree | ee0398b2187e533bcf8e31b6233e62989873612b /src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java | |
parent | 02ea6ca5b57aa72df5972810d1813a23fbbbe942 (diff) | |
download | vaadin-framework-9e15ca6dd44f5d860ec3514bceca34bc58cb87ad.tar.gz vaadin-framework-9e15ca6dd44f5d860ec3514bceca34bc58cb87ad.zip |
fixes #1112 (partially)
svn changeset:2761/svn branch:trunk
Diffstat (limited to 'src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java')
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java index 9998eda636..50e1b76e6d 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java @@ -1,8 +1,12 @@ 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.Event; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; +import com.itmill.toolkit.terminal.gwt.client.ErrorMessage; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; @@ -17,6 +21,10 @@ public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements ApplicationConnection client; + private Element errorIndicatorElement; + + private ErrorMessage errorMessage; + public ICheckBox() { setStyleName(CLASSNAME); addClickListener(new ClickListener() { @@ -28,22 +36,66 @@ public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements } }); + } public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { + // Save details + this.client = client; + id = uidl.getId(); // Ensure correct implementation if (client.updateComponent(this, uidl, false)) return; + + if (uidl.hasAttribute("error")) { + UIDL errorUidl = uidl.getErrors(); + + if (errorIndicatorElement == null) { + errorIndicatorElement = DOM.createDiv(); + DOM.sinkEvents(errorIndicatorElement, Event.MOUSEEVENTS); + DOM.setElementProperty(errorIndicatorElement, "className", + "i-errorindicator"); + DOM.appendChild(getElement(), errorIndicatorElement); + } + if (errorMessage == null) + errorMessage = new ErrorMessage(); + errorMessage.updateFromUIDL(errorUidl); + + } else if (errorIndicatorElement != null) { + DOM.setStyleAttribute(errorIndicatorElement, "display", "none"); + } + + if(uidl.hasAttribute("description")) { + setTitle(uidl.getStringAttribute("description")); + } - // Save details - this.client = client; - id = uidl.getId(); // Set text setText(uidl.getStringAttribute("caption")); setChecked(uidl.getBooleanVariable("state")); immediate = uidl.getBooleanAttribute("immediate"); } + + public void onBrowserEvent(Event event) { + super.onBrowserEvent(event); + Element target = DOM.eventGetTarget(event); + if (errorIndicatorElement != null + && DOM.compare(target, errorIndicatorElement)) { + switch (DOM.eventGetType(event)) { + case Event.ONMOUSEOVER: + errorMessage.showAt(errorIndicatorElement); + break; + case Event.ONMOUSEOUT: + errorMessage.hide(); + break; + case Event.ONCLICK: + ApplicationConnection.getConsole().log( + DOM.getInnerHTML(errorMessage.getElement())); + default: + break; + } + } + } } |