From 2e581760d056ad7038bfa5c04c6fd17c883a7d32 Mon Sep 17 00:00:00 2001 From: Tapio Aali Date: Thu, 31 May 2012 05:30:06 +0000 Subject: Optimized network usage of the split position limits of the SplitPanel (#8880). svn changeset:23857/svn branch:6.8 --- .../vaadin/terminal/gwt/client/ui/VSplitPanel.java | 22 ++++++++++++---------- src/com/vaadin/ui/AbstractSplitPanel.java | 8 ++++++-- 2 files changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java index 613ec47f57..00d76e3a45 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java @@ -147,9 +147,9 @@ public class VSplitPanel extends ComplexPanel implements Container, /* The current position of the split handle in either percentages or pixels */ private String position; - private String maximumPosition; + private String maximumPosition = null; - private String minimumPosition; + private String minimumPosition = null; private final TouchScrollHandler touchScrollHandler; @@ -277,8 +277,10 @@ public class VSplitPanel extends ComplexPanel implements Container, position = uidl.getStringAttribute("position"); - minimumPosition = uidl.getStringAttribute("minimumPosition"); - maximumPosition = uidl.getStringAttribute("maximumPosition"); + minimumPosition = uidl.hasAttribute("minimumPosition") ? uidl + .getStringAttribute("minimumPosition") : null; + maximumPosition = uidl.hasAttribute("maximumPosition") ? uidl + .getStringAttribute("maximumPosition") : null; setSplitPosition(position); @@ -404,12 +406,12 @@ public class VSplitPanel extends ComplexPanel implements Container, private String checkSplitPositionLimits(String pos) { float positionAsFloat = convertToPixels(pos); - float maximumAsFloat = convertToPixels(maximumPosition); - float minimumAsFloat = convertToPixels(minimumPosition); - if (maximumAsFloat < positionAsFloat) { + if (maximumPosition != null + && convertToPixels(maximumPosition) < positionAsFloat) { pos = maximumPosition; - } else if (minimumAsFloat > positionAsFloat) { + } else if (minimumPosition != null + && convertToPixels(minimumPosition) > positionAsFloat) { pos = minimumPosition; } return pos; @@ -870,8 +872,8 @@ public class VSplitPanel extends ComplexPanel implements Container, if (position.indexOf("%") > 0) { pos = Float.valueOf(position.substring(0, position.length() - 1)); } else { - pos = Integer - .parseInt(position.substring(0, position.length() - 2)); + pos = Math.round(Float.parseFloat(position.substring(0, + position.length() - 2))); } client.updateVariable(id, "position", pos, immediate); } diff --git a/src/com/vaadin/ui/AbstractSplitPanel.java b/src/com/vaadin/ui/AbstractSplitPanel.java index ebdee17de2..586dbc81fe 100644 --- a/src/com/vaadin/ui/AbstractSplitPanel.java +++ b/src/com/vaadin/ui/AbstractSplitPanel.java @@ -222,8 +222,12 @@ public abstract class AbstractSplitPanel extends AbstractLayout { final String maximumPosition = posMax + UNIT_SYMBOLS[posMaxUnit]; target.addAttribute("position", position); - target.addAttribute("minimumPosition", minimumPosition); - target.addAttribute("maximumPosition", maximumPosition); + if (minimumPosition != "0%") { + target.addAttribute("minimumPosition", minimumPosition); + } + if (maximumPosition != "100%") { + target.addAttribute("maximumPosition", maximumPosition); + } if (isLocked()) { target.addAttribute("locked", true); -- cgit v1.2.3