summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2013-01-14 17:04:16 +0200
committerLeif Åstrand <leif@vaadin.com>2013-01-14 19:39:59 +0200
commit6f6fe32f67053e99cd7637ac658cd33ec047d873 (patch)
tree7b8167e322f6b61403da32adfbaa386f7a7951ae /client
parentcbe5abeb4c8221a56e116f445a6f054881eb6ce4 (diff)
downloadvaadin-framework-6f6fe32f67053e99cd7637ac658cd33ec047d873.tar.gz
vaadin-framework-6f6fe32f67053e99cd7637ac658cd33ec047d873.zip
Take error element into account when layouting Form (#10589)
Change-Id: I22e232e5b9660d5c1b902435a03250bf97eab102
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/ui/form/FormConnector.java34
1 files changed, 28 insertions, 6 deletions
diff --git a/client/src/com/vaadin/client/ui/form/FormConnector.java b/client/src/com/vaadin/client/ui/form/FormConnector.java
index 09b7fbcd91..61a38e74ba 100644
--- a/client/src/com/vaadin/client/ui/form/FormConnector.java
+++ b/client/src/com/vaadin/client/ui/form/FormConnector.java
@@ -48,24 +48,36 @@ public class FormConnector extends AbstractComponentContainerConnector
public void onElementResize(ElementResizeEvent e) {
VForm form = getWidget();
- int footerHeight;
+ LayoutManager lm = getLayoutManager();
+ int footerHeight = 0;
if (form.footer != null) {
- LayoutManager lm = getLayoutManager();
- footerHeight = lm.getOuterHeight(form.footer.getElement());
+ footerHeight += lm.getOuterHeight(form.footer.getElement());
+ }
+
+ if (form.errorMessage.isVisible()) {
+ footerHeight += lm.getOuterHeight(form.errorMessage
+ .getElement());
+ footerHeight -= lm.getMarginTop(form.errorMessage.getElement());
+ form.errorMessage.getElement().getStyle()
+ .setMarginTop(-footerHeight, Unit.PX);
+ form.footerContainer.getStyle().clearMarginTop();
} else {
- footerHeight = 0;
+ form.footerContainer.getStyle().setMarginTop(-footerHeight,
+ Unit.PX);
}
form.fieldContainer.getStyle().setPaddingBottom(footerHeight,
Unit.PX);
- form.footerContainer.getStyle()
- .setMarginTop(-footerHeight, Unit.PX);
}
};
@Override
public void onUnregister() {
VForm form = getWidget();
+ if (form.errorMessage.isVisible()) {
+ getLayoutManager().removeElementResizeListener(
+ form.errorMessage.getElement(), footerResizeListener);
+ }
if (form.footer != null) {
getLayoutManager().removeElementResizeListener(
form.footer.getElement(), footerResizeListener);
@@ -113,8 +125,18 @@ public class FormConnector extends AbstractComponentContainerConnector
if (null != getState().errorMessage) {
getWidget().errorMessage.updateMessage(getState().errorMessage);
+ if (!getWidget().errorMessage.isVisible()) {
+ getLayoutManager().addElementResizeListener(
+ getWidget().errorMessage.getElement(),
+ footerResizeListener);
+ }
getWidget().errorMessage.setVisible(true);
} else {
+ if (getWidget().errorMessage.isVisible()) {
+ getLayoutManager().removeElementResizeListener(
+ getWidget().errorMessage.getElement(),
+ footerResizeListener);
+ }
getWidget().errorMessage.setVisible(false);
}