From: Matti Tahvonen Date: Fri, 17 Oct 2008 11:59:37 +0000 (+0000) Subject: experimental expand feature for ordered layout X-Git-Tag: 6.7.0.beta1~3978 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7fab3ac9ff536f5d332679db616872483cb19fd3;p=vaadin-framework.git experimental expand feature for ordered layout svn changeset:5653/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/ui/OrderedLayout.java b/src/com/itmill/toolkit/ui/OrderedLayout.java index ad85da4c87..b088d9f298 100644 --- a/src/com/itmill/toolkit/ui/OrderedLayout.java +++ b/src/com/itmill/toolkit/ui/OrderedLayout.java @@ -8,6 +8,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; +import java.util.Map.Entry; import com.itmill.toolkit.terminal.PaintException; import com.itmill.toolkit.terminal.PaintTarget; @@ -52,6 +53,8 @@ public class OrderedLayout extends AbstractLayout implements */ private final Map componentToAlignment = new HashMap(); + private final Map componentToExpandRatio = new HashMap(); + /** * Orientation of the layout. */ @@ -177,6 +180,16 @@ public class OrderedLayout extends AbstractLayout implements } final String[] alignmentsArray = new String[components.size()]; + final Float[] expandRatioArray = new Float[components.size()]; + float sum = getExpandRatioSum(); + boolean equallyDevided = false; + if (sum == 0) { + equallyDevided = true; + float equalSize = 1 / components.size(); + for (int i = 0; i < expandRatioArray.length; i++) { + expandRatioArray[i] = equalSize; + } + } // Adds all items in all the locations int index = 0; for (final Iterator i = components.iterator(); i.hasNext();) { @@ -184,13 +197,28 @@ public class OrderedLayout extends AbstractLayout implements if (c != null) { // Paint child component UIDL c.paint(target); - alignmentsArray[index++] = String + alignmentsArray[index] = String .valueOf(getComponentAlignment(c)); + if (!equallyDevided) { + float myRatio = getExpandRatio(c); + expandRatioArray[index] = myRatio / sum; + } + index++; } } // Add child component alignment info to layout tag target.addAttribute("alignments", alignmentsArray); + target.addAttribute("expandRatios", expandRatioArray); + } + + private float getExpandRatioSum() { + float sum = 0; + for (Iterator> iterator = componentToExpandRatio + .entrySet().iterator(); iterator.hasNext();) { + sum += iterator.next().getValue(); + } + return sum; } /** @@ -314,4 +342,26 @@ public class OrderedLayout extends AbstractLayout implements public boolean isSpacingEnabled() { return spacing; } + + /** + * TODO + * + * @param component + * @param ratio + */ + public void setExpandRatio(Component component, float ratio) { + componentToExpandRatio.put(component, ratio); + }; + + /** + * TODO + * + * @param component + * @return + */ + public float getExpandRatio(Component component) { + Float ratio = componentToExpandRatio.get(component); + return (ratio == null) ? 0 : ratio.floatValue(); + } + }