diff options
author | Artur Signell <artur@vaadin.com> | 2013-01-14 20:29:56 +0000 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2013-01-14 20:29:56 +0000 |
commit | 7e0a8c0e740d80dae89100a406ea9c0063b7ab41 (patch) | |
tree | 36b1c76e8e1c16a8f779d4dfa281a34fc52936f7 /client | |
parent | f2ccb14cde370c61a05972a9b4835bba8b059cad (diff) | |
parent | 6f6fe32f67053e99cd7637ac658cd33ec047d873 (diff) | |
download | vaadin-framework-7e0a8c0e740d80dae89100a406ea9c0063b7ab41.tar.gz vaadin-framework-7e0a8c0e740d80dae89100a406ea9c0063b7ab41.zip |
Merge "Take error element into account when layouting Form (#10589)"
Diffstat (limited to 'client')
-rw-r--r-- | client/src/com/vaadin/client/ui/form/FormConnector.java | 34 |
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); } |