]> source.dussan.org Git - vaadin-framework.git/commitdiff
Avoid int parse error in VSplitPanel and clean up the code (#9154)
authorLeif Åstrand <leif@vaadin.com>
Mon, 30 Jul 2012 13:21:45 +0000 (13:21 +0000)
committerLeif Åstrand <leif@vaadin.com>
Mon, 30 Jul 2012 13:21:45 +0000 (13:21 +0000)
svn changeset:24034/svn branch:6.8

src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java

index 00d76e3a45924dfd433dc5008e1ac6a4f0bd00ac..e8c9b87ce02b65ff5b2b968f423e7f225df049fe 100644 (file)
@@ -385,23 +385,22 @@ public class VSplitPanel extends ComplexPanel implements Container,
      * @return
      */
     private float convertToPercentage(String pos) {
-        float posAsFloat = 0;
-
-        if (pos.indexOf("px") > 0) {
-            int posAsInt = Integer.parseInt(pos.substring(0, pos.length() - 2));
+        if (pos.endsWith("px")) {
+            float pixelPosition = Float.parseFloat(pos.substring(0,
+                    pos.length() - 2));
             int offsetLength = orientation == ORIENTATION_HORIZONTAL ? getOffsetWidth()
                     : getOffsetHeight();
 
-            // 100% needs special handling
-            if (posAsInt + getSplitterSize() >= offsetLength) {
-                posAsInt = offsetLength;
+            // Take splitter size into account at the edge
+            if (pixelPosition + getSplitterSize() >= offsetLength) {
+                return 100;
             }
-            posAsFloat = ((float) posAsInt / (float) offsetLength * 100);
 
+            return pixelPosition / offsetLength * 100;
         } else {
-            posAsFloat = Float.parseFloat(pos.substring(0, pos.length() - 1));
+            assert pos.endsWith("%");
+            return Float.parseFloat(pos.substring(0, pos.length() - 1));
         }
-        return posAsFloat;
     }
 
     private String checkSplitPositionLimits(String pos) {