It will either work in the examples that use it or it won't. Try it and find out.
-Alex On 7/30/17, 3:04 AM, "Harbs" <harbs.li...@gmail.com> wrote: >I think I just ran into the same issue. > >This layout seems to more-or-less do the job, but it’s kind of heavy. > >I did some research into flexbox and it appear that setting flex-basis to >0 does the job. It needs to be set on ONLY the one flexible child. > >Here’s a codepen which shows a use case. >https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcodepen.i >o%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4d73 >2638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&sdat >a=tSTNYANFFiQ4DMGYbAZaz0dJ9qYDYpcwP2ZoSYRIcG8%3D&reserved=0 ><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcodepen. >io%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4d7 >32638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&sda >ta=tSTNYANFFiQ4DMGYbAZaz0dJ9qYDYpcwP2ZoSYRIcG8%3D&reserved=0> > >I noticed that the OneFlexibleLayouts have code which set the flex-basis >of the children if a percentage value is set. When setting the size of >the one flexible child to 0% this causes the flex-basis to be set to 0 >and then the one flexible child will fit the remaining space even if it >might overflow because of its children. > >I have wasted quite a bit of time before I discovered this. I’m not sure >whether the OneFlexibleLayout classes should be changed, or maybe we need >documentation that to fit content that might overflow, the percentage >should be set to 0. It could be there are cases where the entire >OnFlexibleLayout should be fit when smaller and expand (and not scroll) >when bigger. In that case, the current behavior might be correct. > >Thoughts? >Harbs > >> On May 23, 2017, at 10:16 AM, aha...@apache.org wrote: >> >> give up on trying to use FlexBox for full-screen 3-pane views. FlexBox >>seems more happy stretching to content size instead of clipping at the >>computed flex-ed size. These custom layouts will do the proper sizing >> >> >> Project: >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Frepo&data=02%7C01%7C%7C699bbb170 >>b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363 >>70058818766511&sdata=P%2FMkfZAwCYwpQEoCe5UGx8tW0mZaIZsMdDg6VxlaKWA%3D&res >>erved=0 >> Commit: >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fcommit%2Fbdd34d2e&data=02%7C01%7 >>C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7 >>C0%7C0%7C636370058818766511&sdata=QosBAau8lE4nCS7c%2F8B6GDc%2Bqa%2BpSkoP5 >>5x3oji5FnI%3D&reserved=0 >> Tree: >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Ftree%2Fbdd34d2e&data=02%7C01%7C% >>7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0 >>%7C0%7C636370058818766511&sdata=T4CCqwtn%2FgFTmAnaI%2BuCXqtX0P75ebpKVZOxf >>XOTbIE%3D&reserved=0 >> Diff: >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fdiff%2Fbdd34d2e&data=02%7C01%7C% >>7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0 >>%7C0%7C636370058818766511&sdata=f8WVJXc81KrLMuUgRckULYCfglNL7d%2BfdjSbBBU >>0fRo%3D&reserved=0 >> >> Branch: refs/heads/release0.8.0 >> Commit: bdd34d2ef4d8117fa1b222ac470482a42dbea9eb >> Parents: c505d67 >> Author: Alex Harui <aha...@apache.org> >> Authored: Mon May 22 10:12:02 2017 -0700 >> Committer: Alex Harui <aha...@apache.org> >> Committed: Tue May 23 00:15:56 2017 -0700 >> >> ---------------------------------------------------------------------- >> ...eFlexibleChildHorizontalLayoutForOverflow.as | 290 ++++++++++++++++++ >> ...xibleChildHorizontalLayoutLockChildHeight.as | 91 ------ >> ...OneFlexibleChildVerticalLayoutForOverflow.as | 291 >>+++++++++++++++++++ >> ...FlexibleChildVerticalLayoutLockChildWidth.as | 93 ------ >> .../Basic/src/main/resources/basic-manifest.xml | 4 +- >> 5 files changed, 583 insertions(+), 186 deletions(-) >> ---------------------------------------------------------------------- >> >> >> >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp >>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads% >>2Flayouts%2FOneFlexibleChildHorizontalLayoutForOverflow.as&data=02%7C01%7 >>C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7 >>C0%7C0%7C636370058818766511&sdata=L7BjG%2BM7nTwguX%2BNaE5Op6BIT7XZrEqKFop >>0D%2Frc0Aw%3D&reserved=0 >> ---------------------------------------------------------------------- >> diff --git >>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildHorizontalLayoutForOverflow.as >>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildHorizontalLayoutForOverflow.as >> new file mode 100644 >> index 0000000..c6abc22 >> --- /dev/null >> +++ >>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildHorizontalLayoutForOverflow.as >> @@ -0,0 +1,290 @@ >> >>+//////////////////////////////////////////////////////////////////////// >>//////// >> +// >> +// Licensed to the Apache Software Foundation (ASF) under one or more >> +// contributor license agreements. See the NOTICE file distributed >>with >> +// this work for additional information regarding copyright ownership. >> +// The ASF licenses this file to You under the Apache License, >>Version 2.0 >> +// (the "License"); you may not use this file except in compliance >>with >> +// the License. You may obtain a copy of the License at >> +// >> +// >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach >>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4 >>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511& >>sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0 >> +// >> +// Unless required by applicable law or agreed to in writing, software >> +// distributed under the License is distributed on an "AS IS" BASIS, >> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>implied. >> +// See the License for the specific language governing permissions and >> +// limitations under the License. >> +// >> >>+//////////////////////////////////////////////////////////////////////// >>//////// >> +package org.apache.flex.html.beads.layouts >> +{ >> + import org.apache.flex.core.LayoutBase; >> + import org.apache.flex.core.IDocument; >> + import org.apache.flex.core.ILayoutChild; >> + import org.apache.flex.core.ILayoutHost; >> + import org.apache.flex.core.ILayoutView; >> + import org.apache.flex.core.ILayoutParent; >> + import org.apache.flex.core.IParentIUIBase; >> + import org.apache.flex.core.IStrand; >> + import org.apache.flex.core.IUIBase; >> + import org.apache.flex.core.ValuesManager; >> + import org.apache.flex.core.UIBase; >> + import org.apache.flex.events.Event; >> + import org.apache.flex.geom.Rectangle; >> + import org.apache.flex.utils.CSSContainerUtils; >> + import org.apache.flex.utils.CSSUtils; >> + >> + /** >> + * The OneFlexibleChildHorizontalLayoutForOverflowis >> + * intended for building apps that clip >> + * and/or scroll the overflow, especially in a >> + * 3-pane view like the ASDoc examples. It does not use >> + * FlexBox because FlexBox wants to grow to the size >> + * of the content without specifying width/height on >> + * the flexible child. But then the children in >> + * the flexible child cannot use % sizing. >> + * This layout presumes the parent is a known size. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion FlexJS 0.0 >> + */ >> + public class OneFlexibleChildHorizontalLayoutForOverflow extends >>LayoutBase implements IOneFlexibleChildLayout, IDocument >> + { >> + /** >> + * Constructor. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion FlexJS 0.0 >> + */ >> + public function OneFlexibleChildHorizontalLayoutForOverflow() >> + { >> + super(); >> + } >> + >> + private var _flexibleChild:String; >> + >> + protected var actualChild:ILayoutChild; >> + >> + /** >> + * @private >> + * The document. >> + */ >> + private var document:Object; >> + >> + /** >> + * The id of the flexible child >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion FlexJS 0.0 >> + */ >> + public function get flexibleChild():String >> + { >> + return _flexibleChild; >> + } >> + >> + /** >> + * @private >> + */ >> + public function set flexibleChild(value:String):void >> + { >> + _flexibleChild = value; >> + } >> + >> + /** >> + * @copy org.apache.flex.core.IBeadLayout#layout >> + */ >> + COMPILE::JS >> + override public function layout():Boolean >> + { >> + var contentView:ILayoutView = layoutView; >> + >> + actualChild = document[flexibleChild]; >> + >> + var n:int = contentView.numElements; >> + if (n == 0) return false; >> + >> + for(var i:int=0; i < n; i++) { >> + var child:UIBase = contentView.getElementAt(i) >> as UIBase; >> + if (child.element.style["display"] != >> "inline-flex" && >>child.element.style["display"] != "none") >> + child.element.style["display"] = >> "inline-block"; >> + } >> + >> + var w:Number = host.width; >> + for(i=0; i < n; i++) { >> + child = contentView.getElementAt(i) as UIBase; >> + if (child != actualChild) >> + w -= child.width; >> + } >> + actualChild.width = w; >> + >> + return true; >> + } >> + >> + COMPILE::SWF >> + override public function layout():Boolean >> + { >> + var contentView:ILayoutView = layoutView; >> + actualChild = document.hasOwnProperty(flexibleChild) ? >>document[flexibleChild] : null; >> + >> + var n:Number = contentView.numElements; >> + if (n == 0) return false; >> + >> + var maxWidth:Number = 0; >> + var maxHeight:Number = 0; >> + var hostSizedToContent:Boolean = >> host.isHeightSizedToContent(); >> + var hostWidth:Number = host.width; >> + var hostHeight:Number = host.height; >> + >> + var ilc:ILayoutChild; >> + var data:Object; >> + var canAdjust:Boolean = false; >> + var margins:Object; >> + >> + var paddingMetrics:Rectangle = >>CSSContainerUtils.getPaddingMetrics(host); >> + var borderMetrics:Rectangle = >>CSSContainerUtils.getBorderMetrics(host); >> + >> + // adjust the host's usable size by the metrics. If >>hostSizedToContent, then the >> + // resulting adjusted value may be less than zero. >> + hostWidth -= paddingMetrics.left + paddingMetrics.right >> + >>borderMetrics.left + borderMetrics.right; >> + hostHeight -= paddingMetrics.top + >> paddingMetrics.bottom + >>borderMetrics.top + borderMetrics.bottom; >> + >> + var xpos:Number = borderMetrics.left + >> paddingMetrics.left; >> + var ypos:Number = borderMetrics.top + >> paddingMetrics.left; >> + var child:IUIBase; >> + var childHeight:Number; >> + var i:int; >> + var childYpos:Number; >> + var adjustLeft:Number = 0; >> + var adjustRight:Number = hostWidth + borderMetrics.left >> + >>paddingMetrics.left; >> + >> + // first work from left to right >> + for(i=0; i < n; i++) >> + { >> + child = contentView.getElementAt(i) as IUIBase; >> + if (child == null || !child.visible) continue; >> + if (child == actualChild) break; >> + >> + margins = childMargins(child, hostWidth, >> hostHeight); >> + ilc = child as ILayoutChild; >> + >> + xpos += margins.left; >> + >> + childYpos = ypos + margins.top; // default y >> position >> + >> + childHeight = child.height; >> + if (ilc != null) >> + { >> + if (!isNaN(ilc.percentHeight)) { >> + childHeight = host.height * >> ilc.percentHeight/100.0; >> + } >> + else if (isNaN(ilc.explicitHeight)) { >> + childHeight = host.height; >> + } >> + ilc.setHeight(childHeight); >> + } >> + >> + if (ilc) { >> + ilc.setX(xpos); >> + ilc.setY(childYpos); >> + >> + if (!isNaN(ilc.percentWidth)) { >> + ilc.setWidth(hostWidth * >> ilc.percentWidth / 100); >> + } >> + >> + } else { >> + child.x = xpos; >> + child.y = childYpos; >> + } >> + >> + xpos += child.width + margins.right; >> + adjustLeft = xpos; >> + } >> + >> + // then work from right to left >> + xpos = hostWidth + borderMetrics.left + >> paddingMetrics.left; >> + >> + for(i=(n-1); actualChild != null && i >= 0; i--) >> + { >> + child = contentView.getElementAt(i) as IUIBase; >> + if (child == null || !child.visible) continue; >> + if (child == actualChild) break; >> + >> + margins = childMargins(child, hostWidth, >> hostHeight); >> + ilc = child as ILayoutChild; >> + >> + childYpos = ypos + margins.top; // default y >> position >> + >> + childHeight = child.height; >> + if (ilc != null) >> + { >> + if (!isNaN(ilc.percentHeight)) { >> + childHeight = host.height * >> ilc.percentHeight/100.0; >> + } >> + else if (isNaN(ilc.explicitHeight)) { >> + childHeight = host.height; >> + } >> + ilc.setHeight(childHeight); >> + } >> + >> + if (ilc) { >> + if (!isNaN(ilc.percentWidth)) { >> + ilc.setWidth(hostWidth * >> ilc.percentWidth / 100); >> + } >> + } >> + >> + xpos -= child.width + margins.right; >> + >> + if (ilc) { >> + ilc.setX(xpos); >> + ilc.setY(childYpos); >> + } else { >> + child.x = xpos; >> + child.y = childYpos; >> + } >> + >> + xpos -= margins.left; >> + adjustRight = xpos; >> + } >> + >> + // now adjust the actualChild to fill the space. >> + if (actualChild != null) { >> + margins = childMargins(actualChild, hostWidth, >> hostHeight); >> + ilc = actualChild as ILayoutChild; >> + childHeight = actualChild.height; >> + if (ilc != null) >> + { >> + if (!isNaN(ilc.percentHeight)) { >> + childHeight = host.height * >> ilc.percentHeight/100.0; >> + } >> + else if (isNaN(ilc.explicitHeight)) { >> + childHeight = host.height; >> + } >> + ilc.setHeight(childHeight); >> + } >> + childYpos = ypos + margins.top; >> + actualChild.x = adjustLeft + margins.left; >> + actualChild.y = childYpos; >> + if (ilc) { >> + >> ilc.setWidth((adjustRight-margins.right) - >>(adjustLeft+margins.left)); >> + } else { >> + actualChild.width = >> (adjustRight-margins.right) - >>(adjustLeft+margins.left); >> + } >> + } >> + >> + return true; >> + } >> + >> + public function setDocument(document:Object, id:String = >>null):void >> + { >> + this.document = document; >> + } >> + >> + } >> + >> +} >> >> >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp >>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads% >>2Flayouts%2FOneFlexibleChildHorizontalLayoutLockChildHeight.as&data=02%7C >>01%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178dece >>e1%7C0%7C0%7C636370058818766511&sdata=Ir1Siye21IUzzijpvWA1XmQN0AbHktLu%2F >>u3h%2BRtBZT0%3D&reserved=0 >> ---------------------------------------------------------------------- >> diff --git >>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as >>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as >> deleted file mode 100644 >> index d170d23..0000000 >> --- >>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as >> +++ /dev/null >> @@ -1,91 +0,0 @@ >> >>-//////////////////////////////////////////////////////////////////////// >>//////// >> -// >> -// Licensed to the Apache Software Foundation (ASF) under one or more >> -// contributor license agreements. See the NOTICE file distributed >>with >> -// this work for additional information regarding copyright ownership. >> -// The ASF licenses this file to You under the Apache License, >>Version 2.0 >> -// (the "License"); you may not use this file except in compliance >>with >> -// the License. You may obtain a copy of the License at >> -// >> -// >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach >>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4 >>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511& >>sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0 >> -// >> -// Unless required by applicable law or agreed to in writing, software >> -// distributed under the License is distributed on an "AS IS" BASIS, >> -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>implied. >> -// See the License for the specific language governing permissions and >> -// limitations under the License. >> -// >> >>-//////////////////////////////////////////////////////////////////////// >>//////// >> -package org.apache.flex.html.beads.layouts >> -{ >> - import org.apache.flex.core.LayoutBase; >> - import org.apache.flex.core.IDocument; >> - import org.apache.flex.core.ILayoutChild; >> - import org.apache.flex.core.ILayoutHost; >> - import org.apache.flex.core.ILayoutView; >> - import org.apache.flex.core.ILayoutParent; >> - import org.apache.flex.core.IParentIUIBase; >> - import org.apache.flex.core.IStrand; >> - import org.apache.flex.core.IUIBase; >> - import org.apache.flex.core.ValuesManager; >> - import org.apache.flex.core.UIBase; >> - import org.apache.flex.events.Event; >> - import org.apache.flex.geom.Rectangle; >> - import org.apache.flex.utils.CSSContainerUtils; >> - import org.apache.flex.utils.CSSUtils; >> - >> - /** >> - * The OneFlexibleChildHorizontalLayoutLockChildHeight >> - * is a subclass of OneFlexibleChildHorizontalLayout >> - * that sets the flexible child's height to be the height >> - * of the host container. This is useful when you >> - * don't want the actual child's height to dictate the >> - * height of the container in order to force >> - * scrollbars >> - * >> - * @langversion 3.0 >> - * @playerversion Flash 10.2 >> - * @playerversion AIR 2.6 >> - * @productversion FlexJS 0.0 >> - */ >> - public class OneFlexibleChildHorizontalLayoutLockChildHeight extends >>OneFlexibleChildHorizontalLayout >> - { >> - /** >> - * Constructor. >> - * >> - * @langversion 3.0 >> - * @playerversion Flash 10.2 >> - * @playerversion AIR 2.6 >> - * @productversion FlexJS 0.0 >> - */ >> - public function >> OneFlexibleChildHorizontalLayoutLockChildHeight() >> - { >> - super(); >> - } >> - >> - /** >> - * @copy org.apache.flex.core.IBeadLayout#layout >> - */ >> - override public function layout():Boolean >> - { >> - var ret:Boolean = super.layout(); >> - if (ret) >> - { >> - var contentView:ILayoutView = layoutView; >> - >> - var n:int = contentView.numElements; >> - >> - var h:Number = host.height; >> - for(var i:int=0; i < n; i++) { >> - var child:UIBase = >> contentView.getElementAt(i) as UIBase; >> - if (child != actualChild) >> - h = child.height; >> - } >> - actualChild.setHeight(h); >> - } >> - return ret; >> - } >> - >> - } >> - >> -} >> >> >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp >>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads% >>2Flayouts%2FOneFlexibleChildVerticalLayoutForOverflow.as&data=02%7C01%7C% >>7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0 >>%7C0%7C636370058818766511&sdata=WdJnx6IGbPwIxUibKB3UqfKTHgHugWIleqBVsqJ5f >>eE%3D&reserved=0 >> ---------------------------------------------------------------------- >> diff --git >>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildVerticalLayoutForOverflow.as >>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildVerticalLayoutForOverflow.as >> new file mode 100644 >> index 0000000..5679f80 >> --- /dev/null >> +++ >>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildVerticalLayoutForOverflow.as >> @@ -0,0 +1,291 @@ >> >>+//////////////////////////////////////////////////////////////////////// >>//////// >> +// >> +// Licensed to the Apache Software Foundation (ASF) under one or more >> +// contributor license agreements. See the NOTICE file distributed >>with >> +// this work for additional information regarding copyright ownership. >> +// The ASF licenses this file to You under the Apache License, >>Version 2.0 >> +// (the "License"); you may not use this file except in compliance >>with >> +// the License. You may obtain a copy of the License at >> +// >> +// >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach >>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4 >>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511& >>sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0 >> +// >> +// Unless required by applicable law or agreed to in writing, software >> +// distributed under the License is distributed on an "AS IS" BASIS, >> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>implied. >> +// See the License for the specific language governing permissions and >> +// limitations under the License. >> +// >> >>+//////////////////////////////////////////////////////////////////////// >>//////// >> +package org.apache.flex.html.beads.layouts >> +{ >> + import org.apache.flex.core.LayoutBase; >> + import org.apache.flex.core.IDocument; >> + import org.apache.flex.core.ILayoutChild; >> + import org.apache.flex.core.ILayoutHost; >> + import org.apache.flex.core.ILayoutView; >> + import org.apache.flex.core.ILayoutParent; >> + import org.apache.flex.core.IParentIUIBase; >> + import org.apache.flex.core.IStrand; >> + import org.apache.flex.core.IStyleableObject; >> + import org.apache.flex.core.IUIBase; >> + import org.apache.flex.core.ValuesManager; >> + import org.apache.flex.core.UIBase; >> + import org.apache.flex.events.Event; >> + import org.apache.flex.geom.Rectangle; >> + import org.apache.flex.utils.CSSContainerUtils; >> + import org.apache.flex.utils.CSSUtils; >> + >> + /** >> + * The OneFlexibleChildVerticalLayoutForOverflow is >> + * intended for building apps that clip >> + * and/or scroll the overflow, especially in a >> + * 3-pane view like the ASDoc examples. It does not use >> + * FlexBox because FlexBox wants to grow to the size >> + * of the content without specifying width/height on >> + * the flexible child. But then the children in >> + * the flexible child cannot use % sizing. >> + * This layout presumes the parent is a known size. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion FlexJS 0.0 >> + */ >> + public class OneFlexibleChildVerticalLayoutForOverflow extends >>LayoutBase implements IOneFlexibleChildLayout, IDocument >> + { >> + /** >> + * Constructor. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion FlexJS 0.0 >> + */ >> + public function OneFlexibleChildVerticalLayoutForOverflow() >> + { >> + super(); >> + } >> + >> + private var _flexibleChild:String; >> + >> + protected var actualChild:ILayoutChild; >> + >> + /** >> + * @private >> + * The document. >> + */ >> + private var document:Object; >> + >> + /** >> + * The id of the flexible child >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion FlexJS 0.0 >> + */ >> + public function get flexibleChild():String >> + { >> + return _flexibleChild; >> + } >> + >> + /** >> + * @private >> + */ >> + public function set flexibleChild(value:String):void >> + { >> + _flexibleChild = value; >> + } >> + >> + /** >> + * @copy org.apache.flex.core.IBeadLayout#layout >> + */ >> + COMPILE::JS >> + override public function layout():Boolean >> + { >> + var contentView:ILayoutView = layoutView; >> + >> + actualChild = document[flexibleChild]; >> + >> + var n:int = contentView.numElements; >> + if (n == 0) return false; >> + >> + for(var i:int=0; i < n; i++) { >> + var child:UIBase = contentView.getElementAt(i) >> as UIBase; >> + if (child.element.style["display"] != "flex" && >>child.element.style["display"] != "none") >> + child.element.style["display"] = >> "block"; >> + } >> + >> + var h:Number = host.height; >> + for(i=0; i < n; i++) { >> + child = contentView.getElementAt(i) as UIBase; >> + if (child != actualChild) >> + h -= child.height; >> + } >> + actualChild.height = h; >> + >> + return true; >> + } >> + >> + COMPILE::SWF >> + override public function layout():Boolean >> + { >> + var contentView:ILayoutView = layoutView; >> + actualChild = document.hasOwnProperty(flexibleChild) ? >>document[flexibleChild] : null; >> + >> + var n:Number = contentView.numElements; >> + if (n == 0) return false; >> + >> + var maxWidth:Number = 0; >> + var maxHeight:Number = 0; >> + var hostSizedToContent:Boolean = >> host.isWidthSizedToContent(); >> + var hostWidth:Number = host.width; >> + var hostHeight:Number = host.height; >> + >> + var ilc:ILayoutChild; >> + var data:Object; >> + var canAdjust:Boolean = false; >> + var margins:Object; >> + >> + var paddingMetrics:Rectangle = >>CSSContainerUtils.getPaddingMetrics(host); >> + var borderMetrics:Rectangle = >>CSSContainerUtils.getBorderMetrics(host); >> + >> + // adjust the host's usable size by the metrics. If >>hostSizedToContent, then the >> + // resulting adjusted value may be less than zero. >> + hostWidth -= paddingMetrics.left + paddingMetrics.right >> + >>borderMetrics.left + borderMetrics.right; >> + hostHeight -= paddingMetrics.top + >> paddingMetrics.bottom + >>borderMetrics.top + borderMetrics.bottom; >> + >> + var xpos:Number = borderMetrics.left + >> paddingMetrics.left; >> + var ypos:Number = borderMetrics.top + >> paddingMetrics.left; >> + var child:IUIBase; >> + var childWidth:Number; >> + var i:int; >> + var childXpos:Number; >> + var adjustTop:Number = 0; >> + var adjustBottom:Number = hostHeight + >> borderMetrics.top + >>paddingMetrics.top; >> + >> + // first work from top to bottom >> + for(i=0; i < n; i++) >> + { >> + child = contentView.getElementAt(i) as IUIBase; >> + if (child == null || !child.visible) continue; >> + if (child == actualChild) break; >> + >> + margins = childMargins(child, hostWidth, >> hostHeight); >> + ilc = child as ILayoutChild; >> + >> + ypos += margins.top; >> + >> + childXpos = xpos + margins.left; // default x >> position >> + >> + childWidth = child.width; >> + if (ilc != null) >> + { >> + if (!isNaN(ilc.percentWidth)) { >> + childWidth = hostWidth * >> ilc.percentWidth/100.0; >> + } >> + else if (isNaN(ilc.explicitWidth)) { >> + childWidth = hostWidth; >> + } >> + ilc.setWidth(childWidth); >> + } >> + >> + if (ilc) { >> + ilc.setX(childXpos); >> + ilc.setY(ypos); >> + >> + if (!isNaN(ilc.percentHeight)) { >> + ilc.setHeight(hostHeight * >> ilc.percentHeight / 100); >> + } >> + >> + } else { >> + child.x = childXpos; >> + child.y = ypos; >> + } >> + >> + ypos += child.height + margins.bottom; >> + adjustTop = ypos; >> + } >> + >> + // then work from bottom to top >> + ypos = hostHeight + borderMetrics.top + >> paddingMetrics.top; >> + >> + for(i=(n-1); actualChild != null && i >= 0; i--) >> + { >> + child = contentView.getElementAt(i) as IUIBase; >> + if (child == null || !child.visible) continue; >> + if (child == actualChild) break; >> + >> + margins = childMargins(child, hostWidth, >> hostHeight); >> + ilc = child as ILayoutChild; >> + >> + childXpos = xpos + margins.left; // default x >> position >> + >> + childWidth = child.width; >> + if (ilc != null) >> + { >> + if (!isNaN(ilc.percentWidth)) { >> + childWidth = hostWidth * >> ilc.percentWidth/100.0; >> + } >> + else if (isNaN(ilc.explicitWidth)) { >> + childWidth = hostWidth; >> + } >> + ilc.setWidth(childWidth); >> + } >> + >> + if (ilc) { >> + if (!isNaN(ilc.percentHeight)) { >> + ilc.setHeight(hostHeight * >> ilc.percentHeight / 100); >> + } >> + } >> + >> + ypos -= child.height + margins.bottom; >> + >> + if (ilc) { >> + ilc.setX(childXpos); >> + ilc.setY(ypos); >> + } else { >> + child.x = childXpos; >> + child.y = ypos; >> + } >> + >> + ypos -= margins.top; >> + adjustBottom = ypos; >> + } >> + >> + // now adjust the actualChild to fill the space. >> + if (actualChild != null) { >> + margins = childMargins(actualChild, hostWidth, >> hostHeight); >> + ilc = actualChild as ILayoutChild; >> + childWidth = actualChild.width; >> + if (ilc != null) >> + { >> + if (!isNaN(ilc.percentWidth)) { >> + childWidth = hostWidth * >> ilc.percentWidth/100.0; >> + } >> + else if (isNaN(ilc.explicitWidth)) { >> + childWidth = hostWidth; >> + } >> + ilc.setWidth(childWidth); >> + } >> + childXpos = xpos + margins.left; >> + >> + actualChild.x = childXpos >> + actualChild.y = adjustTop + margins.top; >> + if (ilc) { >> + >> ilc.setHeight((adjustBottom-margins.bottom) - >>(adjustTop+margins.top)); >> + } else { >> + actualChild.height = >> (adjustBottom-margins.bottom) - >>(adjustTop+margins.top); >> + } >> + } >> + >> + return true; >> + } >> + >> + public function setDocument(document:Object, id:String = >>null):void >> + { >> + this.document = document; >> + } >> + } >> + >> +} >> >> >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp >>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads% >>2Flayouts%2FOneFlexibleChildVerticalLayoutLockChildWidth.as&data=02%7C01% >>7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1% >>7C0%7C0%7C636370058818766511&sdata=4Q4bkts0dp4wvvLUtu2yTYNg%2Fr7jS8bRt4co >>3nYbPKc%3D&reserved=0 >> ---------------------------------------------------------------------- >> diff --git >>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildVerticalLayoutLockChildWidth.as >>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildVerticalLayoutLockChildWidth.as >> deleted file mode 100644 >> index 7415299..0000000 >> --- >>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo >>uts/OneFlexibleChildVerticalLayoutLockChildWidth.as >> +++ /dev/null >> @@ -1,93 +0,0 @@ >> >>-//////////////////////////////////////////////////////////////////////// >>//////// >> -// >> -// Licensed to the Apache Software Foundation (ASF) under one or more >> -// contributor license agreements. See the NOTICE file distributed >>with >> -// this work for additional information regarding copyright ownership. >> -// The ASF licenses this file to You under the Apache License, >>Version 2.0 >> -// (the "License"); you may not use this file except in compliance >>with >> -// the License. You may obtain a copy of the License at >> -// >> -// >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach >>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4 >>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511& >>sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0 >> -// >> -// Unless required by applicable law or agreed to in writing, software >> -// distributed under the License is distributed on an "AS IS" BASIS, >> -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>implied. >> -// See the License for the specific language governing permissions and >> -// limitations under the License. >> -// >> >>-//////////////////////////////////////////////////////////////////////// >>//////// >> -package org.apache.flex.html.beads.layouts >> -{ >> - import org.apache.flex.core.LayoutBase; >> - import org.apache.flex.core.IDocument; >> - import org.apache.flex.core.ILayoutChild; >> - import org.apache.flex.core.ILayoutHost; >> - import org.apache.flex.core.ILayoutView; >> - import org.apache.flex.core.ILayoutParent; >> - import org.apache.flex.core.IParentIUIBase; >> - import org.apache.flex.core.IStrand; >> - import org.apache.flex.core.IStyleableObject; >> - import org.apache.flex.core.IUIBase; >> - import org.apache.flex.core.ValuesManager; >> - import org.apache.flex.core.UIBase; >> - import org.apache.flex.events.Event; >> - import org.apache.flex.geom.Rectangle; >> - import org.apache.flex.utils.CSSContainerUtils; >> - import org.apache.flex.utils.CSSUtils; >> - >> - /** >> - * The OneFlexibleChildHorizontalLayoutLockChildHeight >> - * is a subclass of OneFlexibleChildHorizontalLayout >> - * that sets the flexible child's height to be the height >> - * of the host container. This is useful when you >> - * don't want the actual child's height to dictate the >> - * height of the container in order to force >> - * scrollbars or line wrapping. >> - * >> - * @langversion 3.0 >> - * @playerversion Flash 10.2 >> - * @playerversion AIR 2.6 >> - * @productversion FlexJS 0.0 >> - */ >> - public class OneFlexibleChildVerticalLayoutLockChildWidth extends >>OneFlexibleChildVerticalLayout >> - { >> - /** >> - * Constructor. >> - * >> - * @langversion 3.0 >> - * @playerversion Flash 10.2 >> - * @playerversion AIR 2.6 >> - * @productversion FlexJS 0.0 >> - */ >> - public function OneFlexibleChildVerticalLayoutLockChildWidth() >> - { >> - super(); >> - } >> - >> - /** >> - * @copy org.apache.flex.core.IBeadLayout#layout >> - */ >> - override public function layout():Boolean >> - { >> - var ret:Boolean = super.layout(); >> - if (ret) >> - { >> - var contentView:ILayoutView = layoutView; >> - >> - var n:int = contentView.numElements; >> - >> - var w:Number = host.width; >> - for(var i:int=0; i < n; i++) { >> - var child:UIBase = >> contentView.getElementAt(i) as UIBase; >> - if (child != actualChild) >> - w = child.width; >> - } >> - >> - actualChild.setWidth(w); >> - } >> - return ret; >> - } >> - >> - } >> - >> -} >> >> >>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp >>rojects%2FBasic%2Fsrc%2Fmain%2Fresources%2Fbasic-manifest.xml&data=02%7C0 >>1%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee >>1%7C0%7C0%7C636370058818766511&sdata=mPldYCuDfp%2BxQ4QROdu4BWSl3Dh7HP19VX >>BR3B3IXOg%3D&reserved=0 >> ---------------------------------------------------------------------- >> diff --git >>a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >>b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >> index 7cbc05d..09bb1a3 100644 >> --- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >> +++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml >> @@ -150,8 +150,8 @@ >> <component id="FlexibleFirstChildHorizontalLayout" >>class="org.apache.flex.html.beads.layouts.FlexibleFirstChildHorizontalLay >>out"/> >> <component id="OneFlexibleChildVerticalLayout" >>class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayout" >>/> >> <component id="OneFlexibleChildHorizontalLayout" >>class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou >>t"/> >> - <component id="OneFlexibleChildVerticalLayoutLockChildWidth" >>class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutL >>ockChildWidth"/> >> - <component id="OneFlexibleChildHorizontalLayoutLockChildHeight" >>class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou >>tLockChildHeight"/> >> + <component id="OneFlexibleChildVerticalLayoutForOverflow" >>class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutF >>orOverflow"/> >> + <component id="OneFlexibleChildHorizontalLayoutForOverflow" >>class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou >>tForOverflow"/> >> <component id="MXMLBeadView" >>class="org.apache.flex.html.MXMLBeadView"/> >> >> <component id="SubAppLoader" >>class="org.apache.flex.html.SubAppLoader" /> >> >