aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/terminal
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2007-11-08 11:49:28 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2007-11-08 11:49:28 +0000
commit9e15ca6dd44f5d860ec3514bceca34bc58cb87ad (patch)
treeee0398b2187e533bcf8e31b6233e62989873612b /src/com/itmill/toolkit/terminal
parent02ea6ca5b57aa72df5972810d1813a23fbbbe942 (diff)
downloadvaadin-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')
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/Caption.java21
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ErrorMessage.java33
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java58
3 files changed, 91 insertions, 21 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Caption.java b/src/com/itmill/toolkit/terminal/gwt/client/Caption.java
index 7a5887cd93..0669524de8 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/Caption.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/Caption.java
@@ -20,8 +20,6 @@ public class Caption extends HTML {
private ErrorMessage errorMessage;
- private PopupPanel errorContainer;
-
/* Caption must be attached to a Paintable */
private Caption() {
};
@@ -106,27 +104,14 @@ public class Caption extends HTML {
}
private void hideErrorMessage() {
- if (errorContainer != null) {
- errorContainer.hide();
+ if (errorMessage != null) {
+ errorMessage.hide();
}
}
private void showErrorMessage() {
if (errorMessage != null) {
- if (errorContainer == null) {
- errorContainer = new PopupPanel();
- errorContainer.setWidget(errorMessage);
- }
- errorContainer.setPopupPosition(DOM
- .getAbsoluteLeft(errorIndicatorElement)
- + 2
- * DOM.getElementPropertyInt(errorIndicatorElement,
- "offsetHeight"), DOM
- .getAbsoluteTop(errorIndicatorElement)
- + 2
- * DOM.getElementPropertyInt(errorIndicatorElement,
- "offsetHeight"));
- errorContainer.show();
+ errorMessage.showAt(errorIndicatorElement);
}
}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ErrorMessage.java b/src/com/itmill/toolkit/terminal/gwt/client/ErrorMessage.java
index fd46951fc1..57ba0b254a 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ErrorMessage.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ErrorMessage.java
@@ -2,8 +2,11 @@ package com.itmill.toolkit.terminal.gwt.client;
import java.util.Iterator;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.PopupPanel;
public class ErrorMessage extends FlowPanel {
public static final String CLASSNAME = "i-error";
@@ -30,4 +33,34 @@ public class ErrorMessage extends FlowPanel {
}
}
}
+
+ /**
+ * Shows this error message next to given element.
+ *
+ * @param indicatorElement
+ */
+ public void showAt(Element indicatorElement) {
+ PopupPanel errorContainer = (PopupPanel) this.getParent();
+ if (errorContainer == null) {
+ errorContainer = new PopupPanel();
+ errorContainer.setWidget(this);
+ }
+ errorContainer.setPopupPosition(DOM
+ .getAbsoluteLeft(indicatorElement)
+ + 2
+ * DOM.getElementPropertyInt(indicatorElement,
+ "offsetHeight"), DOM
+ .getAbsoluteTop(indicatorElement)
+ + 2
+ * DOM.getElementPropertyInt(indicatorElement,
+ "offsetHeight"));
+ errorContainer.show();
+
+ }
+
+ public void hide() {
+ PopupPanel errorContainer = (PopupPanel) this.getParent();
+ if(errorContainer != null)
+ errorContainer.hide();
+ }
}
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;
+ }
+ }
+ }
}