You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@royale.apache.org by Harbs <ha...@gmail.com> on 2017/11/08 22:23:24 UTC

Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Did you test if this effects Accordion?

> On Nov 8, 2017, at 8:00 PM, pent@apache.org wrote:
> 
> This is an automated email from the ASF dual-hosted git repository.
> 
> pent pushed a commit to branch develop
> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
> 
> 
> The following commit(s) were added to refs/heads/develop by this push:
>     new 3e77b0c  PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.
> 3e77b0c is described below
> 
> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
> Author: Peter Ent <pe...@apache.org>
> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
> 
>    PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.
> ---
> .../org/apache/royale/html/beads/PanelView.as      | 58 ++++++++++++----------
> 1 file changed, 32 insertions(+), 26 deletions(-)
> 
> diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as
> index 67b0552..e1343ff 100644
> --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as
> +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/PanelView.as
> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
> 
>             var host:UIBase = UIBase(value);
> 
> +			// Look for a layout and/or viewport bead on the host's beads list. If one
> +			// is found, pull it off so it will not be added permanently
> +			// to the strand.
> +            var beads: Array = host.beads;
> +            var transferLayoutBead: IBeadLayout;
> +            var transferViewportBead: IViewport;
> +			if (host.beads != null) {
> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
> +					if (host.beads[i] is IBeadLayout) {
> +						transferLayoutBead = host.beads[i] as IBeadLayout;
> +						host.beads.splice(i, 1);
> +					}
> +					else if (host.beads[i] is IViewport) {
> +						transferViewportBead = host.beads[i] as IViewport
> +						host.beads.splice(i, 1);
> +					}
> +				}
> +			}
> +
>             if (!_titleBar) {
>                 _titleBar = new TitleBar();
> 			}
> -			
> +
> 			_titleBar.id = "panelTitleBar";
> 
> 			COMPILE::SWF {
> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
> 				_titleBar.element.style["flex-grow"] = "0";
> 				_titleBar.element.style["order"] = "1";
> 			}
> -			
> +
> 			_titleBar.addEventListener("close", handleClose);
> 
> 			// replace the TitleBar's model with the Panel's model (it implements ITitleBarModel) so that
> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
> 			if (!_contentArea) {
> 				_contentArea = new Container();
> 				_contentArea.id = "panelContent";
> -				_contentArea.className = "PanelContent";
> +				_contentArea.typeNames = "PanelContent";
> +
> +				// add the layout bead to the content area.
> +				if (transferLayoutBead) _contentArea.addBead(transferLayoutBead);
> +
> +				// add the viewport bead to the content area.
> +				if (transferViewportBead) _contentArea.addBead(transferViewportBead);
> 
> 				COMPILE::SWF {
> 					_contentArea.percentWidth = 100;
> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
> 
>             super.strand = value;
> 
> -			// If the Panel was given a layout, transfer it to the content area.
> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout) as IBeadLayout;
> -			if (layoutBead) {
> -				value.removeBead(layoutBead);
> -
> -				var contentLayout:IBeadLayout = _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
> -				if (contentLayout) {
> -					_contentArea.removeBead(contentLayout);
> -				}
> -				_contentArea.addBead(layoutBead);
> -			}
> -
> -			// If the Panel was given a viewport, transfer it to the content area.
> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as IViewport;
> -			if (viewportBead) {
> -				value.removeBead(viewportBead);
> -				_contentArea.addBead(viewportBead);
> -			}
> -
> 			if (contentArea.parent == null) {
> 				(_strand as Panel).$addElement(contentArea as IChild);
> 			}
> 
> 			// Now give the Panel its own layout
> -			layoutBead = new VerticalFlexLayout();
> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
> 			value.addBead(layoutBead);
> 		}
> 
> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
> 		override protected function completeSetup():void
> 		{
> 			super.completeSetup();
> -			
> +
> 			performLayout(null);
> 		}
> 
> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
> 			performLayout(event);
> 		}
> -		
> +
> 		private function handleClose(event:Event):void
> 		{
> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
> 		}
> -		
> +
> 	}
> }
> 
> -- 
> To stop receiving notification emails like this one, please contact
> ['"commits@royale.apache.org" <co...@royale.apache.org>'].


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Harbs <ha...@gmail.com>.
Right. That’s what I meant.

> On Nov 10, 2017, at 12:18 AM, Alex Harui <ah...@adobe.com.INVALID> wrote:
> 
> Don't forget that we use composition to simplify things.
> 
> So an AccordionItem can be a Container subclass with a TitleBarModel built
> in and a title property.
> 
> HTH,
> -Alex
> 
> On 11/9/17, 12:51 PM, "Harbs" <ha...@gmail.com> wrote:
> 
>> I think the architecture is sound. The use of it could probably be
>> improved.
>> 
>> Making an AccordionItem which encapsulates a title model would be a good
>> idea.
>> 
>> How do we get AccordionItems without putting them in an array?
>> 
>>> On Nov 9, 2017, at 9:40 PM, Peter Ent <pe...@adobe.com.INVALID> wrote:
>>> 
>>> I wonder if that's not a little too complex. I really couldn't figure
>>> out
>>> how to use it without experimentation and even then, didn't realize
>>> about
>>> the itemRenderer aspect.
>>> 
>>> How about something like this:
>>> 
>>> <js:Accordion>
>>>   <js:AccordionItem title="Child 1">
>>>       <js:VGroup>
>>>       </js:VGroup>
>>>   </js:AccordionItem>
>>>   <js:AccordionItem title="Child 2">
>>>       <js:HGroup>
>>>       </js:HGroup>
>>>   </js:AccordionItem>
>>> </js:Accordion>
>>> 
>>> This way we don't have to do much special and the developer doesn't have
>>> to see dataProviders and <fx:Array>. The AccordionItem really supplies
>>> just a header and it could even be a subclass of TitleBar that accepts a
>>> single child. Plus you could change its IBeadView from
>>> AccordionItemViewBead to something custom. And with each AccordionItem
>>> having a single child, that child could be anything you wanted.
>>> 
>>> I'll just publish an example for how it works now and leave it unless
>>> there's a desire for something else.
>>> 
>>> —peter
>>> 
>>> 
>>> 
>>> 
>>> On 11/9/17, 2:32 PM, "Harbs" <ha...@gmail.com> wrote:
>>> 
>>>> The rendering of the items is done by ItemRenderers (which in the
>>>> default
>>>> I believe is a Panel).
>>>> 
>>>>> On Nov 9, 2017, at 9:31 PM, Harbs <ha...@gmail.com> wrote:
>>>>> 
>>>>> Accordion was designed to not care what specific components the
>>>>> individual panels are. For a title, it needs a TitleBarModel. That’s
>>>>> it.
>>>>> 
>>>>> Here’s an example:
>>>>> 
>>>>> 
>>>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub
>>>>> .c
>>>>> 
>>>>> om%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&data
>>>>> =0
>>>>> 
>>>>> 2%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c1
>>>>> 78
>>>>> 
>>>>> decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYlw
>>>>> Un
>>>>> G8sh2j%2BiKPPHhY%3D&reserved=0
>>>>> 
>>>>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
>>>>> b.
>>>>> 
>>>>> com%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&dat
>>>>> a=
>>>>> 
>>>>> 02%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c
>>>>> 17
>>>>> 
>>>>> 8decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYl
>>>>> wU
>>>>> nG8sh2j%2BiKPPHhY%3D&reserved=0>
>>>>> 
>>>>>> On Nov 9, 2017, at 6:39 PM, Peter Ent <pent@adobe.com.INVALID
>>>>>> <ma...@adobe.com.INVALID>> wrote:
>>>>>> 
>>>>>> I saw that Container worked, but how do you get labels on them?
>>>>>> —peter
>>>>>> 
>>>>>> 
>>>>>> On 11/9/17, 9:54 AM, "Harbs" <harbs.lists@gmail.com
>>>>>> <ma...@gmail.com>> wrote:
>>>>>> 
>>>>>>> Inside the js:Array should be Container elements.
>>>>>>> 
>>>>>>> I’m using it in production.
>>>>>>> 
>>>>>>>> On Nov 9, 2017, at 4:28 PM, Peter Ent <pent@adobe.com.INVALID
>>>>>>>> <ma...@adobe.com.INVALID>> wrote:
>>>>>>>> 
>>>>>>>> I tested my change. I don't think it adversely affects Accordion at
>>>>>>>> all,
>>>>>>>> but Accordion doesn't seem to be working correctly anyway.
>>>>>>>> 
>>>>>>>> I'm getting Panels inside of Panels. So if in the <fx:Array>
>>>>>>>> supplied to
>>>>>>>> Accordion, I have a <js:Panel>, that Panel gives title to the
>>>>>>>> Accordion
>>>>>>>> header, but then a panel becomes a child of that container. I think
>>>>>>>> Accordion needs a re-do.
>>>>>>>> 
>>>>>>>> The change I made to PanelView is very simple and I cannot see it
>>>>>>>> having
>>>>>>>> any adverse affects. I also found an old email where I said I would
>>>>>>>> make
>>>>>>>> an official AccordionExample as part of the examples/ directory.
>>>>>>>> I'm
>>>>>>>> going
>>>>>>>> to take what I just put together and do that so we'll have
>>>>>>>> something
>>>>>>>> to
>>>>>>>> work with.
>>>>>>>> 
>>>>>>>> ‹peter
>>>>>>>> 
>>>>>>>> On 11/8/17, 5:23 PM, "Harbs" <harbs.lists@gmail.com
>>>>>>>> <ma...@gmail.com>> wrote:
>>>>>>>> 
>>>>>>>>> Did you test if this effects Accordion?
>>>>>>>>> 
>>>>>>>>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org
>>>>>>>>>> <ma...@apache.org> wrote:
>>>>>>>>>> 
>>>>>>>>>> This is an automated email from the ASF dual-hosted git
>>>>>>>>>> repository.
>>>>>>>>>> 
>>>>>>>>>> pent pushed a commit to branch develop
>>>>>>>>>> in repository
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
>>>>>>>>>> it
>>>>>>>>>> box 
>>>>>>>>>> 
>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2F
>>>>>>>>>> gi
>>>>>>>>>> tbox>
>>>>>>>>>> .a
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974
>>>>>>>>>> be
>>>>>>>>>> fcb
>>>>>>>>>> e4
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6
>>>>>>>>>> 36
>>>>>>>>>> 457
>>>>>>>>>> 76
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3
>>>>>>>>>> D&
>>>>>>>>>> res
>>>>>>>>>> er
>>>>>>>>>> ved=0
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> The following commit(s) were added to refs/heads/develop by this
>>>>>>>>>> push:
>>>>>>>>>> new 3e77b0c  PanelView no longer removes beads. Instead, it
>>>>>>>>>> transfers beads from the Panel to its Container content area.
>>>>>>>>>> 3e77b0c is described below
>>>>>>>>>> 
>>>>>>>>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>>>>>>>>> Author: Peter Ent <pe...@apache.org>
>>>>>>>>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>>>>>>>>> 
>>>>>>>>>> PanelView no longer removes beads. Instead, it transfers beads
>>>>>>>>>> from
>>>>>>>>>> the Panel to its Container content area.
>>>>>>>>>> ---
>>>>>>>>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>>>>>>>>> ++++++++++++----------
>>>>>>>>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>>>>>>>>> 
>>>>>>>>>> diff --git
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>> /b
>>>>>>>>>> ead
>>>>>>>>>> s/
>>>>>>>>>> PanelView.as
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>> /b
>>>>>>>>>> ead
>>>>>>>>>> s/
>>>>>>>>>> PanelView.as
>>>>>>>>>> index 67b0552..e1343ff 100644
>>>>>>>>>> --- 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>> /b
>>>>>>>>>> ead
>>>>>>>>>> s/
>>>>>>>>>> PanelView.as
>>>>>>>>>> +++ 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>> /b
>>>>>>>>>> ead
>>>>>>>>>> s/
>>>>>>>>>> PanelView.as
>>>>>>>>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>>>>>>>>> 
>>>>>>>>>>         var host:UIBase = UIBase(value);
>>>>>>>>>> 
>>>>>>>>>> +			// Look for a layout and/or viewport bead on the host's beads
>>>>>>>>>> list.
>>>>>>>>>> If one
>>>>>>>>>> +			// is found, pull it off so it will not be added permanently
>>>>>>>>>> +			// to the strand.
>>>>>>>>>> +            var beads: Array = host.beads;
>>>>>>>>>> +            var transferLayoutBead: IBeadLayout;
>>>>>>>>>> +            var transferViewportBead: IViewport;
>>>>>>>>>> +			if (host.beads != null) {
>>>>>>>>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>>>>>>>>> +					if (host.beads[i] is IBeadLayout) {
>>>>>>>>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>>>>>>>>> +						host.beads.splice(i, 1);
>>>>>>>>>> +					}
>>>>>>>>>> +					else if (host.beads[i] is IViewport) {
>>>>>>>>>> +						transferViewportBead = host.beads[i] as IViewport
>>>>>>>>>> +						host.beads.splice(i, 1);
>>>>>>>>>> +					}
>>>>>>>>>> +				}
>>>>>>>>>> +			}
>>>>>>>>>> +
>>>>>>>>>>         if (!_titleBar) {
>>>>>>>>>>             _titleBar = new TitleBar();
>>>>>>>>>> 			}
>>>>>>>>>> -			
>>>>>>>>>> +
>>>>>>>>>> 			_titleBar.id = "panelTitleBar";
>>>>>>>>>> 
>>>>>>>>>> 			COMPILE::SWF {
>>>>>>>>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>>>>>>>>> 				_titleBar.element.style["flex-grow"] = "0";
>>>>>>>>>> 				_titleBar.element.style["order"] = "1";
>>>>>>>>>> 			}
>>>>>>>>>> -			
>>>>>>>>>> +
>>>>>>>>>> 			_titleBar.addEventListener("close", handleClose);
>>>>>>>>>> 
>>>>>>>>>> 			// replace the TitleBar's model with the Panel's model (it
>>>>>>>>>> implements ITitleBarModel) so that
>>>>>>>>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>>>>>>>>> 			if (!_contentArea) {
>>>>>>>>>> 				_contentArea = new Container();
>>>>>>>>>> 				_contentArea.id = "panelContent";
>>>>>>>>>> -				_contentArea.className = "PanelContent";
>>>>>>>>>> +				_contentArea.typeNames = "PanelContent";
>>>>>>>>>> +
>>>>>>>>>> +				// add the layout bead to the content area.
>>>>>>>>>> +				if (transferLayoutBead)
>>>>>>>>>> _contentArea.addBead(transferLayoutBead);
>>>>>>>>>> +
>>>>>>>>>> +				// add the viewport bead to the content area.
>>>>>>>>>> +				if (transferViewportBead)
>>>>>>>>>> _contentArea.addBead(transferViewportBead);
>>>>>>>>>> 
>>>>>>>>>> 				COMPILE::SWF {
>>>>>>>>>> 					_contentArea.percentWidth = 100;
>>>>>>>>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>>>>>>>>> 
>>>>>>>>>>         super.strand = value;
>>>>>>>>>> 
>>>>>>>>>> -			// If the Panel was given a layout, transfer it to the
>>>>>>>>>> content
>>>>>>>>>> area.
>>>>>>>>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout)
>>>>>>>>>> as
>>>>>>>>>> IBeadLayout;
>>>>>>>>>> -			if (layoutBead) {
>>>>>>>>>> -				value.removeBead(layoutBead);
>>>>>>>>>> -
>>>>>>>>>> -				var contentLayout:IBeadLayout =
>>>>>>>>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>>>>>>>>> -				if (contentLayout) {
>>>>>>>>>> -					_contentArea.removeBead(contentLayout);
>>>>>>>>>> -				}
>>>>>>>>>> -				_contentArea.addBead(layoutBead);
>>>>>>>>>> -			}
>>>>>>>>>> -
>>>>>>>>>> -			// If the Panel was given a viewport, transfer it to the
>>>>>>>>>> content
>>>>>>>>>> area.
>>>>>>>>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport)
>>>>>>>>>> as
>>>>>>>>>> IViewport;
>>>>>>>>>> -			if (viewportBead) {
>>>>>>>>>> -				value.removeBead(viewportBead);
>>>>>>>>>> -				_contentArea.addBead(viewportBead);
>>>>>>>>>> -			}
>>>>>>>>>> -
>>>>>>>>>> 			if (contentArea.parent == null) {
>>>>>>>>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>>>>>>>>> 			}
>>>>>>>>>> 
>>>>>>>>>> 			// Now give the Panel its own layout
>>>>>>>>>> -			layoutBead = new VerticalFlexLayout();
>>>>>>>>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>>>>>>>>> 			value.addBead(layoutBead);
>>>>>>>>>> 		}
>>>>>>>>>> 
>>>>>>>>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>>>>>>>>> 		override protected function completeSetup():void
>>>>>>>>>> 		{
>>>>>>>>>> 			super.completeSetup();
>>>>>>>>>> -			
>>>>>>>>>> +
>>>>>>>>>> 			performLayout(null);
>>>>>>>>>> 		}
>>>>>>>>>> 
>>>>>>>>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>>>>>>>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>>>>>>>>> 			performLayout(event);
>>>>>>>>>> 		}
>>>>>>>>>> -		
>>>>>>>>>> +
>>>>>>>>>> 		private function handleClose(event:Event):void
>>>>>>>>>> 		{
>>>>>>>>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>>>>>>>>> 		}
>>>>>>>>>> -		
>>>>>>>>>> +
>>>>>>>>>> 	}
>>>>>>>>>> }
>>>>>>>>>> 
>>>>>>>>>> -- 
>>>>>>>>>> To stop receiving notification emails like this one, please
>>>>>>>>>> contact
>>>>>>>>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Alex Harui <ah...@adobe.com.INVALID>.
Don't forget that we use composition to simplify things.

So an AccordionItem can be a Container subclass with a TitleBarModel built
in and a title property.

HTH,
-Alex

On 11/9/17, 12:51 PM, "Harbs" <ha...@gmail.com> wrote:

>I think the architecture is sound. The use of it could probably be
>improved.
>
>Making an AccordionItem which encapsulates a title model would be a good
>idea.
>
>How do we get AccordionItems without putting them in an array?
>
>> On Nov 9, 2017, at 9:40 PM, Peter Ent <pe...@adobe.com.INVALID> wrote:
>> 
>> I wonder if that's not a little too complex. I really couldn't figure
>>out
>> how to use it without experimentation and even then, didn't realize
>>about
>> the itemRenderer aspect.
>> 
>> How about something like this:
>> 
>> <js:Accordion>
>>    <js:AccordionItem title="Child 1">
>>        <js:VGroup>
>>        </js:VGroup>
>>    </js:AccordionItem>
>>    <js:AccordionItem title="Child 2">
>>        <js:HGroup>
>>        </js:HGroup>
>>    </js:AccordionItem>
>> </js:Accordion>
>> 
>> This way we don't have to do much special and the developer doesn't have
>> to see dataProviders and <fx:Array>. The AccordionItem really supplies
>> just a header and it could even be a subclass of TitleBar that accepts a
>> single child. Plus you could change its IBeadView from
>> AccordionItemViewBead to something custom. And with each AccordionItem
>> having a single child, that child could be anything you wanted.
>> 
>> I'll just publish an example for how it works now and leave it unless
>> there's a desire for something else.
>> 
>> —peter
>> 
>> 
>> 
>> 
>> On 11/9/17, 2:32 PM, "Harbs" <ha...@gmail.com> wrote:
>> 
>>> The rendering of the items is done by ItemRenderers (which in the
>>>default
>>> I believe is a Panel).
>>> 
>>>> On Nov 9, 2017, at 9:31 PM, Harbs <ha...@gmail.com> wrote:
>>>> 
>>>> Accordion was designed to not care what specific components the
>>>> individual panels are. For a title, it needs a TitleBarModel. That’s
>>>>it.
>>>> 
>>>> Here’s an example:
>>>> 
>>>> 
>>>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub
>>>>.c
>>>> 
>>>>om%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&data
>>>>=0
>>>> 
>>>>2%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c1
>>>>78
>>>> 
>>>>decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYlw
>>>>Un
>>>> G8sh2j%2BiKPPHhY%3D&reserved=0
>>>> 
>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
>>>>b.
>>>> 
>>>>com%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&dat
>>>>a=
>>>> 
>>>>02%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c
>>>>17
>>>> 
>>>>8decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYl
>>>>wU
>>>> nG8sh2j%2BiKPPHhY%3D&reserved=0>
>>>> 
>>>>> On Nov 9, 2017, at 6:39 PM, Peter Ent <pent@adobe.com.INVALID
>>>>> <ma...@adobe.com.INVALID>> wrote:
>>>>> 
>>>>> I saw that Container worked, but how do you get labels on them?
>>>>> —peter
>>>>> 
>>>>> 
>>>>> On 11/9/17, 9:54 AM, "Harbs" <harbs.lists@gmail.com
>>>>> <ma...@gmail.com>> wrote:
>>>>> 
>>>>>> Inside the js:Array should be Container elements.
>>>>>> 
>>>>>> I’m using it in production.
>>>>>> 
>>>>>>> On Nov 9, 2017, at 4:28 PM, Peter Ent <pent@adobe.com.INVALID
>>>>>>> <ma...@adobe.com.INVALID>> wrote:
>>>>>>> 
>>>>>>> I tested my change. I don't think it adversely affects Accordion at
>>>>>>> all,
>>>>>>> but Accordion doesn't seem to be working correctly anyway.
>>>>>>> 
>>>>>>> I'm getting Panels inside of Panels. So if in the <fx:Array>
>>>>>>> supplied to
>>>>>>> Accordion, I have a <js:Panel>, that Panel gives title to the
>>>>>>> Accordion
>>>>>>> header, but then a panel becomes a child of that container. I think
>>>>>>> Accordion needs a re-do.
>>>>>>> 
>>>>>>> The change I made to PanelView is very simple and I cannot see it
>>>>>>> having
>>>>>>> any adverse affects. I also found an old email where I said I would
>>>>>>> make
>>>>>>> an official AccordionExample as part of the examples/ directory.
>>>>>>>I'm
>>>>>>> going
>>>>>>> to take what I just put together and do that so we'll have
>>>>>>>something
>>>>>>> to
>>>>>>> work with.
>>>>>>> 
>>>>>>> ‹peter
>>>>>>> 
>>>>>>> On 11/8/17, 5:23 PM, "Harbs" <harbs.lists@gmail.com
>>>>>>> <ma...@gmail.com>> wrote:
>>>>>>> 
>>>>>>>> Did you test if this effects Accordion?
>>>>>>>> 
>>>>>>>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org
>>>>>>>>> <ma...@apache.org> wrote:
>>>>>>>>> 
>>>>>>>>> This is an automated email from the ASF dual-hosted git
>>>>>>>>>repository.
>>>>>>>>> 
>>>>>>>>> pent pushed a commit to branch develop
>>>>>>>>> in repository
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
>>>>>>>>>it
>>>>>>>>> box 
>>>>>>>>> 
>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2F
>>>>>>>>>gi
>>>>>>>>> tbox>
>>>>>>>>> .a
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974
>>>>>>>>>be
>>>>>>>>> fcb
>>>>>>>>> e4
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6
>>>>>>>>>36
>>>>>>>>> 457
>>>>>>>>> 76
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3
>>>>>>>>>D&
>>>>>>>>> res
>>>>>>>>> er
>>>>>>>>> ved=0
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> The following commit(s) were added to refs/heads/develop by this
>>>>>>>>> push:
>>>>>>>>>  new 3e77b0c  PanelView no longer removes beads. Instead, it
>>>>>>>>> transfers beads from the Panel to its Container content area.
>>>>>>>>> 3e77b0c is described below
>>>>>>>>> 
>>>>>>>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>>>>>>>> Author: Peter Ent <pe...@apache.org>
>>>>>>>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>>>>>>>> 
>>>>>>>>> PanelView no longer removes beads. Instead, it transfers beads
>>>>>>>>> from
>>>>>>>>> the Panel to its Container content area.
>>>>>>>>> ---
>>>>>>>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>>>>>>>> ++++++++++++----------
>>>>>>>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>>>>>>>> 
>>>>>>>>> diff --git
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>/b
>>>>>>>>> ead
>>>>>>>>> s/
>>>>>>>>> PanelView.as
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>/b
>>>>>>>>> ead
>>>>>>>>> s/
>>>>>>>>> PanelView.as
>>>>>>>>> index 67b0552..e1343ff 100644
>>>>>>>>> --- 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>/b
>>>>>>>>> ead
>>>>>>>>> s/
>>>>>>>>> PanelView.as
>>>>>>>>> +++ 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html
>>>>>>>>>/b
>>>>>>>>> ead
>>>>>>>>> s/
>>>>>>>>> PanelView.as
>>>>>>>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>>>>>>>> 
>>>>>>>>>          var host:UIBase = UIBase(value);
>>>>>>>>> 
>>>>>>>>> +			// Look for a layout and/or viewport bead on the host's beads
>>>>>>>>> list.
>>>>>>>>> If one
>>>>>>>>> +			// is found, pull it off so it will not be added permanently
>>>>>>>>> +			// to the strand.
>>>>>>>>> +            var beads: Array = host.beads;
>>>>>>>>> +            var transferLayoutBead: IBeadLayout;
>>>>>>>>> +            var transferViewportBead: IViewport;
>>>>>>>>> +			if (host.beads != null) {
>>>>>>>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>>>>>>>> +					if (host.beads[i] is IBeadLayout) {
>>>>>>>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>>>>>>>> +						host.beads.splice(i, 1);
>>>>>>>>> +					}
>>>>>>>>> +					else if (host.beads[i] is IViewport) {
>>>>>>>>> +						transferViewportBead = host.beads[i] as IViewport
>>>>>>>>> +						host.beads.splice(i, 1);
>>>>>>>>> +					}
>>>>>>>>> +				}
>>>>>>>>> +			}
>>>>>>>>> +
>>>>>>>>>          if (!_titleBar) {
>>>>>>>>>              _titleBar = new TitleBar();
>>>>>>>>> 			}
>>>>>>>>> -			
>>>>>>>>> +
>>>>>>>>> 			_titleBar.id = "panelTitleBar";
>>>>>>>>> 
>>>>>>>>> 			COMPILE::SWF {
>>>>>>>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>>>>>>>> 				_titleBar.element.style["flex-grow"] = "0";
>>>>>>>>> 				_titleBar.element.style["order"] = "1";
>>>>>>>>> 			}
>>>>>>>>> -			
>>>>>>>>> +
>>>>>>>>> 			_titleBar.addEventListener("close", handleClose);
>>>>>>>>> 
>>>>>>>>> 			// replace the TitleBar's model with the Panel's model (it
>>>>>>>>> implements ITitleBarModel) so that
>>>>>>>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>>>>>>>> 			if (!_contentArea) {
>>>>>>>>> 				_contentArea = new Container();
>>>>>>>>> 				_contentArea.id = "panelContent";
>>>>>>>>> -				_contentArea.className = "PanelContent";
>>>>>>>>> +				_contentArea.typeNames = "PanelContent";
>>>>>>>>> +
>>>>>>>>> +				// add the layout bead to the content area.
>>>>>>>>> +				if (transferLayoutBead)
>>>>>>>>> _contentArea.addBead(transferLayoutBead);
>>>>>>>>> +
>>>>>>>>> +				// add the viewport bead to the content area.
>>>>>>>>> +				if (transferViewportBead)
>>>>>>>>> _contentArea.addBead(transferViewportBead);
>>>>>>>>> 
>>>>>>>>> 				COMPILE::SWF {
>>>>>>>>> 					_contentArea.percentWidth = 100;
>>>>>>>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>>>>>>>> 
>>>>>>>>>          super.strand = value;
>>>>>>>>> 
>>>>>>>>> -			// If the Panel was given a layout, transfer it to the
>>>>>>>>>content
>>>>>>>>> area.
>>>>>>>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout)
>>>>>>>>> as
>>>>>>>>> IBeadLayout;
>>>>>>>>> -			if (layoutBead) {
>>>>>>>>> -				value.removeBead(layoutBead);
>>>>>>>>> -
>>>>>>>>> -				var contentLayout:IBeadLayout =
>>>>>>>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>>>>>>>> -				if (contentLayout) {
>>>>>>>>> -					_contentArea.removeBead(contentLayout);
>>>>>>>>> -				}
>>>>>>>>> -				_contentArea.addBead(layoutBead);
>>>>>>>>> -			}
>>>>>>>>> -
>>>>>>>>> -			// If the Panel was given a viewport, transfer it to the
>>>>>>>>> content
>>>>>>>>> area.
>>>>>>>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport)
>>>>>>>>>as
>>>>>>>>> IViewport;
>>>>>>>>> -			if (viewportBead) {
>>>>>>>>> -				value.removeBead(viewportBead);
>>>>>>>>> -				_contentArea.addBead(viewportBead);
>>>>>>>>> -			}
>>>>>>>>> -
>>>>>>>>> 			if (contentArea.parent == null) {
>>>>>>>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>>>>>>>> 			}
>>>>>>>>> 
>>>>>>>>> 			// Now give the Panel its own layout
>>>>>>>>> -			layoutBead = new VerticalFlexLayout();
>>>>>>>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>>>>>>>> 			value.addBead(layoutBead);
>>>>>>>>> 		}
>>>>>>>>> 
>>>>>>>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>>>>>>>> 		override protected function completeSetup():void
>>>>>>>>> 		{
>>>>>>>>> 			super.completeSetup();
>>>>>>>>> -			
>>>>>>>>> +
>>>>>>>>> 			performLayout(null);
>>>>>>>>> 		}
>>>>>>>>> 
>>>>>>>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>>>>>>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>>>>>>>> 			performLayout(event);
>>>>>>>>> 		}
>>>>>>>>> -		
>>>>>>>>> +
>>>>>>>>> 		private function handleClose(event:Event):void
>>>>>>>>> 		{
>>>>>>>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>>>>>>>> 		}
>>>>>>>>> -		
>>>>>>>>> +
>>>>>>>>> 	}
>>>>>>>>> }
>>>>>>>>> 
>>>>>>>>> -- 
>>>>>>>>> To stop receiving notification emails like this one, please
>>>>>>>>>contact
>>>>>>>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
>


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Harbs <ha...@gmail.com>.
I think the architecture is sound. The use of it could probably be improved.

Making an AccordionItem which encapsulates a title model would be a good idea.

How do we get AccordionItems without putting them in an array?

> On Nov 9, 2017, at 9:40 PM, Peter Ent <pe...@adobe.com.INVALID> wrote:
> 
> I wonder if that's not a little too complex. I really couldn't figure out
> how to use it without experimentation and even then, didn't realize about
> the itemRenderer aspect.
> 
> How about something like this:
> 
> <js:Accordion>
>    <js:AccordionItem title="Child 1">
>        <js:VGroup>
>        </js:VGroup>
>    </js:AccordionItem>
>    <js:AccordionItem title="Child 2">
>        <js:HGroup>
>        </js:HGroup>
>    </js:AccordionItem>
> </js:Accordion>
> 
> This way we don't have to do much special and the developer doesn't have
> to see dataProviders and <fx:Array>. The AccordionItem really supplies
> just a header and it could even be a subclass of TitleBar that accepts a
> single child. Plus you could change its IBeadView from
> AccordionItemViewBead to something custom. And with each AccordionItem
> having a single child, that child could be anything you wanted.
> 
> I'll just publish an example for how it works now and leave it unless
> there's a desire for something else.
> 
> —peter
> 
> 
> 
> 
> On 11/9/17, 2:32 PM, "Harbs" <ha...@gmail.com> wrote:
> 
>> The rendering of the items is done by ItemRenderers (which in the default
>> I believe is a Panel).
>> 
>>> On Nov 9, 2017, at 9:31 PM, Harbs <ha...@gmail.com> wrote:
>>> 
>>> Accordion was designed to not care what specific components the
>>> individual panels are. For a title, it needs a TitleBarModel. That’s it.
>>> 
>>> Here’s an example:
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.c
>>> om%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&data=0
>>> 2%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c178
>>> decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYlwUn
>>> G8sh2j%2BiKPPHhY%3D&reserved=0
>>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
>>> com%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&data=
>>> 02%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c17
>>> 8decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYlwU
>>> nG8sh2j%2BiKPPHhY%3D&reserved=0>
>>> 
>>>> On Nov 9, 2017, at 6:39 PM, Peter Ent <pent@adobe.com.INVALID
>>>> <ma...@adobe.com.INVALID>> wrote:
>>>> 
>>>> I saw that Container worked, but how do you get labels on them?
>>>> —peter
>>>> 
>>>> 
>>>> On 11/9/17, 9:54 AM, "Harbs" <harbs.lists@gmail.com
>>>> <ma...@gmail.com>> wrote:
>>>> 
>>>>> Inside the js:Array should be Container elements.
>>>>> 
>>>>> I’m using it in production.
>>>>> 
>>>>>> On Nov 9, 2017, at 4:28 PM, Peter Ent <pent@adobe.com.INVALID
>>>>>> <ma...@adobe.com.INVALID>> wrote:
>>>>>> 
>>>>>> I tested my change. I don't think it adversely affects Accordion at
>>>>>> all,
>>>>>> but Accordion doesn't seem to be working correctly anyway.
>>>>>> 
>>>>>> I'm getting Panels inside of Panels. So if in the <fx:Array>
>>>>>> supplied to
>>>>>> Accordion, I have a <js:Panel>, that Panel gives title to the
>>>>>> Accordion
>>>>>> header, but then a panel becomes a child of that container. I think
>>>>>> Accordion needs a re-do.
>>>>>> 
>>>>>> The change I made to PanelView is very simple and I cannot see it
>>>>>> having
>>>>>> any adverse affects. I also found an old email where I said I would
>>>>>> make
>>>>>> an official AccordionExample as part of the examples/ directory. I'm
>>>>>> going
>>>>>> to take what I just put together and do that so we'll have something
>>>>>> to
>>>>>> work with.
>>>>>> 
>>>>>> ‹peter
>>>>>> 
>>>>>> On 11/8/17, 5:23 PM, "Harbs" <harbs.lists@gmail.com
>>>>>> <ma...@gmail.com>> wrote:
>>>>>> 
>>>>>>> Did you test if this effects Accordion?
>>>>>>> 
>>>>>>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org
>>>>>>>> <ma...@apache.org> wrote:
>>>>>>>> 
>>>>>>>> This is an automated email from the ASF dual-hosted git repository.
>>>>>>>> 
>>>>>>>> pent pushed a commit to branch develop
>>>>>>>> in repository
>>>>>>>> 
>>>>>>>> 
>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
>>>>>>>> box 
>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgi
>>>>>>>> tbox>
>>>>>>>> .a
>>>>>>>> 
>>>>>>>> 
>>>>>>>> pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974be
>>>>>>>> fcb
>>>>>>>> e4
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636
>>>>>>>> 457
>>>>>>>> 76
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&
>>>>>>>> res
>>>>>>>> er
>>>>>>>> ved=0
>>>>>>>> 
>>>>>>>> 
>>>>>>>> The following commit(s) were added to refs/heads/develop by this
>>>>>>>> push:
>>>>>>>>  new 3e77b0c  PanelView no longer removes beads. Instead, it
>>>>>>>> transfers beads from the Panel to its Container content area.
>>>>>>>> 3e77b0c is described below
>>>>>>>> 
>>>>>>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>>>>>>> Author: Peter Ent <pe...@apache.org>
>>>>>>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>>>>>>> 
>>>>>>>> PanelView no longer removes beads. Instead, it transfers beads
>>>>>>>> from
>>>>>>>> the Panel to its Container content area.
>>>>>>>> ---
>>>>>>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>>>>>>> ++++++++++++----------
>>>>>>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>>>>>>> 
>>>>>>>> diff --git 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>> ead
>>>>>>>> s/
>>>>>>>> PanelView.as
>>>>>>>> 
>>>>>>>> 
>>>>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>> ead
>>>>>>>> s/
>>>>>>>> PanelView.as
>>>>>>>> index 67b0552..e1343ff 100644
>>>>>>>> --- 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>> ead
>>>>>>>> s/
>>>>>>>> PanelView.as
>>>>>>>> +++ 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>> ead
>>>>>>>> s/
>>>>>>>> PanelView.as
>>>>>>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>>>>>>> 
>>>>>>>>          var host:UIBase = UIBase(value);
>>>>>>>> 
>>>>>>>> +			// Look for a layout and/or viewport bead on the host's beads
>>>>>>>> list.
>>>>>>>> If one
>>>>>>>> +			// is found, pull it off so it will not be added permanently
>>>>>>>> +			// to the strand.
>>>>>>>> +            var beads: Array = host.beads;
>>>>>>>> +            var transferLayoutBead: IBeadLayout;
>>>>>>>> +            var transferViewportBead: IViewport;
>>>>>>>> +			if (host.beads != null) {
>>>>>>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>>>>>>> +					if (host.beads[i] is IBeadLayout) {
>>>>>>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>>>>>>> +						host.beads.splice(i, 1);
>>>>>>>> +					}
>>>>>>>> +					else if (host.beads[i] is IViewport) {
>>>>>>>> +						transferViewportBead = host.beads[i] as IViewport
>>>>>>>> +						host.beads.splice(i, 1);
>>>>>>>> +					}
>>>>>>>> +				}
>>>>>>>> +			}
>>>>>>>> +
>>>>>>>>          if (!_titleBar) {
>>>>>>>>              _titleBar = new TitleBar();
>>>>>>>> 			}
>>>>>>>> -			
>>>>>>>> +
>>>>>>>> 			_titleBar.id = "panelTitleBar";
>>>>>>>> 
>>>>>>>> 			COMPILE::SWF {
>>>>>>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>>>>>>> 				_titleBar.element.style["flex-grow"] = "0";
>>>>>>>> 				_titleBar.element.style["order"] = "1";
>>>>>>>> 			}
>>>>>>>> -			
>>>>>>>> +
>>>>>>>> 			_titleBar.addEventListener("close", handleClose);
>>>>>>>> 
>>>>>>>> 			// replace the TitleBar's model with the Panel's model (it
>>>>>>>> implements ITitleBarModel) so that
>>>>>>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>>>>>>> 			if (!_contentArea) {
>>>>>>>> 				_contentArea = new Container();
>>>>>>>> 				_contentArea.id = "panelContent";
>>>>>>>> -				_contentArea.className = "PanelContent";
>>>>>>>> +				_contentArea.typeNames = "PanelContent";
>>>>>>>> +
>>>>>>>> +				// add the layout bead to the content area.
>>>>>>>> +				if (transferLayoutBead)
>>>>>>>> _contentArea.addBead(transferLayoutBead);
>>>>>>>> +
>>>>>>>> +				// add the viewport bead to the content area.
>>>>>>>> +				if (transferViewportBead)
>>>>>>>> _contentArea.addBead(transferViewportBead);
>>>>>>>> 
>>>>>>>> 				COMPILE::SWF {
>>>>>>>> 					_contentArea.percentWidth = 100;
>>>>>>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>>>>>>> 
>>>>>>>>          super.strand = value;
>>>>>>>> 
>>>>>>>> -			// If the Panel was given a layout, transfer it to the content
>>>>>>>> area.
>>>>>>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout)
>>>>>>>> as
>>>>>>>> IBeadLayout;
>>>>>>>> -			if (layoutBead) {
>>>>>>>> -				value.removeBead(layoutBead);
>>>>>>>> -
>>>>>>>> -				var contentLayout:IBeadLayout =
>>>>>>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>>>>>>> -				if (contentLayout) {
>>>>>>>> -					_contentArea.removeBead(contentLayout);
>>>>>>>> -				}
>>>>>>>> -				_contentArea.addBead(layoutBead);
>>>>>>>> -			}
>>>>>>>> -
>>>>>>>> -			// If the Panel was given a viewport, transfer it to the
>>>>>>>> content
>>>>>>>> area.
>>>>>>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>>>>>>> IViewport;
>>>>>>>> -			if (viewportBead) {
>>>>>>>> -				value.removeBead(viewportBead);
>>>>>>>> -				_contentArea.addBead(viewportBead);
>>>>>>>> -			}
>>>>>>>> -
>>>>>>>> 			if (contentArea.parent == null) {
>>>>>>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>>>>>>> 			}
>>>>>>>> 
>>>>>>>> 			// Now give the Panel its own layout
>>>>>>>> -			layoutBead = new VerticalFlexLayout();
>>>>>>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>>>>>>> 			value.addBead(layoutBead);
>>>>>>>> 		}
>>>>>>>> 
>>>>>>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>>>>>>> 		override protected function completeSetup():void
>>>>>>>> 		{
>>>>>>>> 			super.completeSetup();
>>>>>>>> -			
>>>>>>>> +
>>>>>>>> 			performLayout(null);
>>>>>>>> 		}
>>>>>>>> 
>>>>>>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>>>>>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>>>>>>> 			performLayout(event);
>>>>>>>> 		}
>>>>>>>> -		
>>>>>>>> +
>>>>>>>> 		private function handleClose(event:Event):void
>>>>>>>> 		{
>>>>>>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>>>>>>> 		}
>>>>>>>> -		
>>>>>>>> +
>>>>>>>> 	}
>>>>>>>> }
>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> To stop receiving notification emails like this one, please contact
>>>>>>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Peter Ent <pe...@adobe.com.INVALID>.
I wonder if that's not a little too complex. I really couldn't figure out
how to use it without experimentation and even then, didn't realize about
the itemRenderer aspect.

How about something like this:

<js:Accordion>
    <js:AccordionItem title="Child 1">
        <js:VGroup>
        </js:VGroup>
    </js:AccordionItem>
    <js:AccordionItem title="Child 2">
        <js:HGroup>
        </js:HGroup>
    </js:AccordionItem>
</js:Accordion>

This way we don't have to do much special and the developer doesn't have
to see dataProviders and <fx:Array>. The AccordionItem really supplies
just a header and it could even be a subclass of TitleBar that accepts a
single child. Plus you could change its IBeadView from
AccordionItemViewBead to something custom. And with each AccordionItem
having a single child, that child could be anything you wanted.

I'll just publish an example for how it works now and leave it unless
there's a desire for something else.

—peter




On 11/9/17, 2:32 PM, "Harbs" <ha...@gmail.com> wrote:

>The rendering of the items is done by ItemRenderers (which in the default
>I believe is a Panel).
>
>> On Nov 9, 2017, at 9:31 PM, Harbs <ha...@gmail.com> wrote:
>> 
>> Accordion was designed to not care what specific components the
>>individual panels are. For a title, it needs a TitleBarModel. That’s it.
>> 
>> Here’s an example:
>> 
>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.c
>>om%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&data=0
>>2%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c178
>>decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYlwUn
>>G8sh2j%2BiKPPHhY%3D&reserved=0
>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
>>com%2Fyishayw%2FExamples%2Fblob%2FAccordion_Express%2FExamples.mxml&data=
>>02%7C01%7C%7C095c290879ce4c1d712108d527a89e8e%7Cfa7b1b5a7b34438794aed2c17
>>8decee1%7C0%7C0%7C636458527527098248&sdata=DutGVMejNnl7H18IB%2BqhqlKOYlwU
>>nG8sh2j%2BiKPPHhY%3D&reserved=0>
>> 
>>> On Nov 9, 2017, at 6:39 PM, Peter Ent <pent@adobe.com.INVALID
>>><ma...@adobe.com.INVALID>> wrote:
>>> 
>>> I saw that Container worked, but how do you get labels on them?
>>> —peter
>>> 
>>> 
>>> On 11/9/17, 9:54 AM, "Harbs" <harbs.lists@gmail.com
>>><ma...@gmail.com>> wrote:
>>> 
>>>> Inside the js:Array should be Container elements.
>>>> 
>>>> I’m using it in production.
>>>> 
>>>>> On Nov 9, 2017, at 4:28 PM, Peter Ent <pent@adobe.com.INVALID
>>>>><ma...@adobe.com.INVALID>> wrote:
>>>>> 
>>>>> I tested my change. I don't think it adversely affects Accordion at
>>>>>all,
>>>>> but Accordion doesn't seem to be working correctly anyway.
>>>>> 
>>>>> I'm getting Panels inside of Panels. So if in the <fx:Array>
>>>>>supplied to
>>>>> Accordion, I have a <js:Panel>, that Panel gives title to the
>>>>>Accordion
>>>>> header, but then a panel becomes a child of that container. I think
>>>>> Accordion needs a re-do.
>>>>> 
>>>>> The change I made to PanelView is very simple and I cannot see it
>>>>>having
>>>>> any adverse affects. I also found an old email where I said I would
>>>>>make
>>>>> an official AccordionExample as part of the examples/ directory. I'm
>>>>> going
>>>>> to take what I just put together and do that so we'll have something
>>>>>to
>>>>> work with.
>>>>> 
>>>>> ‹peter
>>>>> 
>>>>> On 11/8/17, 5:23 PM, "Harbs" <harbs.lists@gmail.com
>>>>><ma...@gmail.com>> wrote:
>>>>> 
>>>>>> Did you test if this effects Accordion?
>>>>>> 
>>>>>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org
>>>>>>><ma...@apache.org> wrote:
>>>>>>> 
>>>>>>> This is an automated email from the ASF dual-hosted git repository.
>>>>>>> 
>>>>>>> pent pushed a commit to branch develop
>>>>>>> in repository
>>>>>>> 
>>>>>>> 
>>>>>>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
>>>>>>>box 
>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgi
>>>>>>>tbox>
>>>>>>> .a
>>>>>>> 
>>>>>>> 
>>>>>>>pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974be
>>>>>>>fcb
>>>>>>> e4
>>>>>>> 
>>>>>>> 
>>>>>>>86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636
>>>>>>>457
>>>>>>> 76
>>>>>>> 
>>>>>>> 
>>>>>>>6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&
>>>>>>>res
>>>>>>> er
>>>>>>> ved=0
>>>>>>> 
>>>>>>> 
>>>>>>> The following commit(s) were added to refs/heads/develop by this
>>>>>>>push:
>>>>>>>   new 3e77b0c  PanelView no longer removes beads. Instead, it
>>>>>>> transfers beads from the Panel to its Container content area.
>>>>>>> 3e77b0c is described below
>>>>>>> 
>>>>>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>>>>>> Author: Peter Ent <pe...@apache.org>
>>>>>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>>>>>> 
>>>>>>>  PanelView no longer removes beads. Instead, it transfers beads
>>>>>>>from
>>>>>>> the Panel to its Container content area.
>>>>>>> ---
>>>>>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>>>>>> ++++++++++++----------
>>>>>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>>>>>> 
>>>>>>> diff --git 
>>>>>>> 
>>>>>>> 
>>>>>>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>ead
>>>>>>> s/
>>>>>>> PanelView.as
>>>>>>> 
>>>>>>> 
>>>>>>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>ead
>>>>>>> s/
>>>>>>> PanelView.as
>>>>>>> index 67b0552..e1343ff 100644
>>>>>>> --- 
>>>>>>> 
>>>>>>> 
>>>>>>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>ead
>>>>>>> s/
>>>>>>> PanelView.as
>>>>>>> +++ 
>>>>>>> 
>>>>>>> 
>>>>>>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/b
>>>>>>>ead
>>>>>>> s/
>>>>>>> PanelView.as
>>>>>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>>>>>> 
>>>>>>>           var host:UIBase = UIBase(value);
>>>>>>> 
>>>>>>> +			// Look for a layout and/or viewport bead on the host's beads
>>>>>>> list.
>>>>>>> If one
>>>>>>> +			// is found, pull it off so it will not be added permanently
>>>>>>> +			// to the strand.
>>>>>>> +            var beads: Array = host.beads;
>>>>>>> +            var transferLayoutBead: IBeadLayout;
>>>>>>> +            var transferViewportBead: IViewport;
>>>>>>> +			if (host.beads != null) {
>>>>>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>>>>>> +					if (host.beads[i] is IBeadLayout) {
>>>>>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>>>>>> +						host.beads.splice(i, 1);
>>>>>>> +					}
>>>>>>> +					else if (host.beads[i] is IViewport) {
>>>>>>> +						transferViewportBead = host.beads[i] as IViewport
>>>>>>> +						host.beads.splice(i, 1);
>>>>>>> +					}
>>>>>>> +				}
>>>>>>> +			}
>>>>>>> +
>>>>>>>           if (!_titleBar) {
>>>>>>>               _titleBar = new TitleBar();
>>>>>>> 			}
>>>>>>> -			
>>>>>>> +
>>>>>>> 			_titleBar.id = "panelTitleBar";
>>>>>>> 
>>>>>>> 			COMPILE::SWF {
>>>>>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>>>>>> 				_titleBar.element.style["flex-grow"] = "0";
>>>>>>> 				_titleBar.element.style["order"] = "1";
>>>>>>> 			}
>>>>>>> -			
>>>>>>> +
>>>>>>> 			_titleBar.addEventListener("close", handleClose);
>>>>>>> 
>>>>>>> 			// replace the TitleBar's model with the Panel's model (it
>>>>>>> implements ITitleBarModel) so that
>>>>>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>>>>>> 			if (!_contentArea) {
>>>>>>> 				_contentArea = new Container();
>>>>>>> 				_contentArea.id = "panelContent";
>>>>>>> -				_contentArea.className = "PanelContent";
>>>>>>> +				_contentArea.typeNames = "PanelContent";
>>>>>>> +
>>>>>>> +				// add the layout bead to the content area.
>>>>>>> +				if (transferLayoutBead)
>>>>>>>_contentArea.addBead(transferLayoutBead);
>>>>>>> +
>>>>>>> +				// add the viewport bead to the content area.
>>>>>>> +				if (transferViewportBead)
>>>>>>> _contentArea.addBead(transferViewportBead);
>>>>>>> 
>>>>>>> 				COMPILE::SWF {
>>>>>>> 					_contentArea.percentWidth = 100;
>>>>>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>>>>>> 
>>>>>>>           super.strand = value;
>>>>>>> 
>>>>>>> -			// If the Panel was given a layout, transfer it to the content
>>>>>>> area.
>>>>>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout)
>>>>>>>as
>>>>>>> IBeadLayout;
>>>>>>> -			if (layoutBead) {
>>>>>>> -				value.removeBead(layoutBead);
>>>>>>> -
>>>>>>> -				var contentLayout:IBeadLayout =
>>>>>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>>>>>> -				if (contentLayout) {
>>>>>>> -					_contentArea.removeBead(contentLayout);
>>>>>>> -				}
>>>>>>> -				_contentArea.addBead(layoutBead);
>>>>>>> -			}
>>>>>>> -
>>>>>>> -			// If the Panel was given a viewport, transfer it to the
>>>>>>>content
>>>>>>> area.
>>>>>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>>>>>> IViewport;
>>>>>>> -			if (viewportBead) {
>>>>>>> -				value.removeBead(viewportBead);
>>>>>>> -				_contentArea.addBead(viewportBead);
>>>>>>> -			}
>>>>>>> -
>>>>>>> 			if (contentArea.parent == null) {
>>>>>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>>>>>> 			}
>>>>>>> 
>>>>>>> 			// Now give the Panel its own layout
>>>>>>> -			layoutBead = new VerticalFlexLayout();
>>>>>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>>>>>> 			value.addBead(layoutBead);
>>>>>>> 		}
>>>>>>> 
>>>>>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>>>>>> 		override protected function completeSetup():void
>>>>>>> 		{
>>>>>>> 			super.completeSetup();
>>>>>>> -			
>>>>>>> +
>>>>>>> 			performLayout(null);
>>>>>>> 		}
>>>>>>> 
>>>>>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>>>>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>>>>>> 			performLayout(event);
>>>>>>> 		}
>>>>>>> -		
>>>>>>> +
>>>>>>> 		private function handleClose(event:Event):void
>>>>>>> 		{
>>>>>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>>>>>> 		}
>>>>>>> -		
>>>>>>> +
>>>>>>> 	}
>>>>>>> }
>>>>>>> 
>>>>>>> -- 
>>>>>>> To stop receiving notification emails like this one, please contact
>>>>>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
>


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Harbs <ha...@gmail.com>.
The rendering of the items is done by ItemRenderers (which in the default I believe is a Panel).

> On Nov 9, 2017, at 9:31 PM, Harbs <ha...@gmail.com> wrote:
> 
> Accordion was designed to not care what specific components the individual panels are. For a title, it needs a TitleBarModel. That’s it.
> 
> Here’s an example:
> https://github.com/yishayw/Examples/blob/Accordion_Express/Examples.mxml <https://github.com/yishayw/Examples/blob/Accordion_Express/Examples.mxml>
> 
>> On Nov 9, 2017, at 6:39 PM, Peter Ent <pent@adobe.com.INVALID <ma...@adobe.com.INVALID>> wrote:
>> 
>> I saw that Container worked, but how do you get labels on them?
>> —peter
>> 
>> 
>> On 11/9/17, 9:54 AM, "Harbs" <harbs.lists@gmail.com <ma...@gmail.com>> wrote:
>> 
>>> Inside the js:Array should be Container elements.
>>> 
>>> I’m using it in production.
>>> 
>>>> On Nov 9, 2017, at 4:28 PM, Peter Ent <pent@adobe.com.INVALID <ma...@adobe.com.INVALID>> wrote:
>>>> 
>>>> I tested my change. I don't think it adversely affects Accordion at all,
>>>> but Accordion doesn't seem to be working correctly anyway.
>>>> 
>>>> I'm getting Panels inside of Panels. So if in the <fx:Array> supplied to
>>>> Accordion, I have a <js:Panel>, that Panel gives title to the Accordion
>>>> header, but then a panel becomes a child of that container. I think
>>>> Accordion needs a re-do.
>>>> 
>>>> The change I made to PanelView is very simple and I cannot see it having
>>>> any adverse affects. I also found an old email where I said I would make
>>>> an official AccordionExample as part of the examples/ directory. I'm
>>>> going
>>>> to take what I just put together and do that so we'll have something to
>>>> work with.
>>>> 
>>>> ‹peter
>>>> 
>>>> On 11/8/17, 5:23 PM, "Harbs" <harbs.lists@gmail.com <ma...@gmail.com>> wrote:
>>>> 
>>>>> Did you test if this effects Accordion?
>>>>> 
>>>>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org <ma...@apache.org> wrote:
>>>>>> 
>>>>>> This is an automated email from the ASF dual-hosted git repository.
>>>>>> 
>>>>>> pent pushed a commit to branch develop
>>>>>> in repository 
>>>>>> 
>>>>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox>
>>>>>> .a
>>>>>> 
>>>>>> pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974befcb
>>>>>> e4
>>>>>> 
>>>>>> 86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636457
>>>>>> 76
>>>>>> 
>>>>>> 6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&res
>>>>>> er
>>>>>> ved=0
>>>>>> 
>>>>>> 
>>>>>> The following commit(s) were added to refs/heads/develop by this push:
>>>>>>   new 3e77b0c  PanelView no longer removes beads. Instead, it
>>>>>> transfers beads from the Panel to its Container content area.
>>>>>> 3e77b0c is described below
>>>>>> 
>>>>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>>>>> Author: Peter Ent <pe...@apache.org>
>>>>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>>>>> 
>>>>>>  PanelView no longer removes beads. Instead, it transfers beads from
>>>>>> the Panel to its Container content area.
>>>>>> ---
>>>>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>>>>> ++++++++++++----------
>>>>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>>>>> 
>>>>>> diff --git 
>>>>>> 
>>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>>> s/
>>>>>> PanelView.as 
>>>>>> 
>>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>>> s/
>>>>>> PanelView.as
>>>>>> index 67b0552..e1343ff 100644
>>>>>> --- 
>>>>>> 
>>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>>> s/
>>>>>> PanelView.as
>>>>>> +++ 
>>>>>> 
>>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>>> s/
>>>>>> PanelView.as
>>>>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>>>>> 
>>>>>>           var host:UIBase = UIBase(value);
>>>>>> 
>>>>>> +			// Look for a layout and/or viewport bead on the host's beads
>>>>>> list.
>>>>>> If one
>>>>>> +			// is found, pull it off so it will not be added permanently
>>>>>> +			// to the strand.
>>>>>> +            var beads: Array = host.beads;
>>>>>> +            var transferLayoutBead: IBeadLayout;
>>>>>> +            var transferViewportBead: IViewport;
>>>>>> +			if (host.beads != null) {
>>>>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>>>>> +					if (host.beads[i] is IBeadLayout) {
>>>>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>>>>> +						host.beads.splice(i, 1);
>>>>>> +					}
>>>>>> +					else if (host.beads[i] is IViewport) {
>>>>>> +						transferViewportBead = host.beads[i] as IViewport
>>>>>> +						host.beads.splice(i, 1);
>>>>>> +					}
>>>>>> +				}
>>>>>> +			}
>>>>>> +
>>>>>>           if (!_titleBar) {
>>>>>>               _titleBar = new TitleBar();
>>>>>> 			}
>>>>>> -			
>>>>>> +
>>>>>> 			_titleBar.id = "panelTitleBar";
>>>>>> 
>>>>>> 			COMPILE::SWF {
>>>>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>>>>> 				_titleBar.element.style["flex-grow"] = "0";
>>>>>> 				_titleBar.element.style["order"] = "1";
>>>>>> 			}
>>>>>> -			
>>>>>> +
>>>>>> 			_titleBar.addEventListener("close", handleClose);
>>>>>> 
>>>>>> 			// replace the TitleBar's model with the Panel's model (it
>>>>>> implements ITitleBarModel) so that
>>>>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>>>>> 			if (!_contentArea) {
>>>>>> 				_contentArea = new Container();
>>>>>> 				_contentArea.id = "panelContent";
>>>>>> -				_contentArea.className = "PanelContent";
>>>>>> +				_contentArea.typeNames = "PanelContent";
>>>>>> +
>>>>>> +				// add the layout bead to the content area.
>>>>>> +				if (transferLayoutBead) _contentArea.addBead(transferLayoutBead);
>>>>>> +
>>>>>> +				// add the viewport bead to the content area.
>>>>>> +				if (transferViewportBead)
>>>>>> _contentArea.addBead(transferViewportBead);
>>>>>> 
>>>>>> 				COMPILE::SWF {
>>>>>> 					_contentArea.percentWidth = 100;
>>>>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>>>>> 
>>>>>>           super.strand = value;
>>>>>> 
>>>>>> -			// If the Panel was given a layout, transfer it to the content
>>>>>> area.
>>>>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout) as
>>>>>> IBeadLayout;
>>>>>> -			if (layoutBead) {
>>>>>> -				value.removeBead(layoutBead);
>>>>>> -
>>>>>> -				var contentLayout:IBeadLayout =
>>>>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>>>>> -				if (contentLayout) {
>>>>>> -					_contentArea.removeBead(contentLayout);
>>>>>> -				}
>>>>>> -				_contentArea.addBead(layoutBead);
>>>>>> -			}
>>>>>> -
>>>>>> -			// If the Panel was given a viewport, transfer it to the content
>>>>>> area.
>>>>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>>>>> IViewport;
>>>>>> -			if (viewportBead) {
>>>>>> -				value.removeBead(viewportBead);
>>>>>> -				_contentArea.addBead(viewportBead);
>>>>>> -			}
>>>>>> -
>>>>>> 			if (contentArea.parent == null) {
>>>>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>>>>> 			}
>>>>>> 
>>>>>> 			// Now give the Panel its own layout
>>>>>> -			layoutBead = new VerticalFlexLayout();
>>>>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>>>>> 			value.addBead(layoutBead);
>>>>>> 		}
>>>>>> 
>>>>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>>>>> 		override protected function completeSetup():void
>>>>>> 		{
>>>>>> 			super.completeSetup();
>>>>>> -			
>>>>>> +
>>>>>> 			performLayout(null);
>>>>>> 		}
>>>>>> 
>>>>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>>>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>>>>> 			performLayout(event);
>>>>>> 		}
>>>>>> -		
>>>>>> +
>>>>>> 		private function handleClose(event:Event):void
>>>>>> 		{
>>>>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>>>>> 		}
>>>>>> -		
>>>>>> +
>>>>>> 	}
>>>>>> }
>>>>>> 
>>>>>> -- 
>>>>>> To stop receiving notification emails like this one, please contact
>>>>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>>>>> 
>>>> 
>>> 
>> 
> 


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Harbs <ha...@gmail.com>.
Accordion was designed to not care what specific components the individual panels are. For a title, it needs a TitleBarModel. That’s it.

Here’s an example:
https://github.com/yishayw/Examples/blob/Accordion_Express/Examples.mxml <https://github.com/yishayw/Examples/blob/Accordion_Express/Examples.mxml>

> On Nov 9, 2017, at 6:39 PM, Peter Ent <pe...@adobe.com.INVALID> wrote:
> 
> I saw that Container worked, but how do you get labels on them?
> —peter
> 
> 
> On 11/9/17, 9:54 AM, "Harbs" <ha...@gmail.com> wrote:
> 
>> Inside the js:Array should be Container elements.
>> 
>> I’m using it in production.
>> 
>>> On Nov 9, 2017, at 4:28 PM, Peter Ent <pe...@adobe.com.INVALID> wrote:
>>> 
>>> I tested my change. I don't think it adversely affects Accordion at all,
>>> but Accordion doesn't seem to be working correctly anyway.
>>> 
>>> I'm getting Panels inside of Panels. So if in the <fx:Array> supplied to
>>> Accordion, I have a <js:Panel>, that Panel gives title to the Accordion
>>> header, but then a panel becomes a child of that container. I think
>>> Accordion needs a re-do.
>>> 
>>> The change I made to PanelView is very simple and I cannot see it having
>>> any adverse affects. I also found an old email where I said I would make
>>> an official AccordionExample as part of the examples/ directory. I'm
>>> going
>>> to take what I just put together and do that so we'll have something to
>>> work with.
>>> 
>>> ‹peter
>>> 
>>> On 11/8/17, 5:23 PM, "Harbs" <ha...@gmail.com> wrote:
>>> 
>>>> Did you test if this effects Accordion?
>>>> 
>>>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org wrote:
>>>>> 
>>>>> This is an automated email from the ASF dual-hosted git repository.
>>>>> 
>>>>> pent pushed a commit to branch develop
>>>>> in repository 
>>>>> 
>>>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox
>>>>> .a
>>>>> 
>>>>> pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974befcb
>>>>> e4
>>>>> 
>>>>> 86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636457
>>>>> 76
>>>>> 
>>>>> 6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&res
>>>>> er
>>>>> ved=0
>>>>> 
>>>>> 
>>>>> The following commit(s) were added to refs/heads/develop by this push:
>>>>>   new 3e77b0c  PanelView no longer removes beads. Instead, it
>>>>> transfers beads from the Panel to its Container content area.
>>>>> 3e77b0c is described below
>>>>> 
>>>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>>>> Author: Peter Ent <pe...@apache.org>
>>>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>>>> 
>>>>>  PanelView no longer removes beads. Instead, it transfers beads from
>>>>> the Panel to its Container content area.
>>>>> ---
>>>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>>>> ++++++++++++----------
>>>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>>>> 
>>>>> diff --git 
>>>>> 
>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>> s/
>>>>> PanelView.as 
>>>>> 
>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>> s/
>>>>> PanelView.as
>>>>> index 67b0552..e1343ff 100644
>>>>> --- 
>>>>> 
>>>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>> s/
>>>>> PanelView.as
>>>>> +++ 
>>>>> 
>>>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>> s/
>>>>> PanelView.as
>>>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>>>> 
>>>>>           var host:UIBase = UIBase(value);
>>>>> 
>>>>> +			// Look for a layout and/or viewport bead on the host's beads
>>>>> list.
>>>>> If one
>>>>> +			// is found, pull it off so it will not be added permanently
>>>>> +			// to the strand.
>>>>> +            var beads: Array = host.beads;
>>>>> +            var transferLayoutBead: IBeadLayout;
>>>>> +            var transferViewportBead: IViewport;
>>>>> +			if (host.beads != null) {
>>>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>>>> +					if (host.beads[i] is IBeadLayout) {
>>>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>>>> +						host.beads.splice(i, 1);
>>>>> +					}
>>>>> +					else if (host.beads[i] is IViewport) {
>>>>> +						transferViewportBead = host.beads[i] as IViewport
>>>>> +						host.beads.splice(i, 1);
>>>>> +					}
>>>>> +				}
>>>>> +			}
>>>>> +
>>>>>           if (!_titleBar) {
>>>>>               _titleBar = new TitleBar();
>>>>> 			}
>>>>> -			
>>>>> +
>>>>> 			_titleBar.id = "panelTitleBar";
>>>>> 
>>>>> 			COMPILE::SWF {
>>>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>>>> 				_titleBar.element.style["flex-grow"] = "0";
>>>>> 				_titleBar.element.style["order"] = "1";
>>>>> 			}
>>>>> -			
>>>>> +
>>>>> 			_titleBar.addEventListener("close", handleClose);
>>>>> 
>>>>> 			// replace the TitleBar's model with the Panel's model (it
>>>>> implements ITitleBarModel) so that
>>>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>>>> 			if (!_contentArea) {
>>>>> 				_contentArea = new Container();
>>>>> 				_contentArea.id = "panelContent";
>>>>> -				_contentArea.className = "PanelContent";
>>>>> +				_contentArea.typeNames = "PanelContent";
>>>>> +
>>>>> +				// add the layout bead to the content area.
>>>>> +				if (transferLayoutBead) _contentArea.addBead(transferLayoutBead);
>>>>> +
>>>>> +				// add the viewport bead to the content area.
>>>>> +				if (transferViewportBead)
>>>>> _contentArea.addBead(transferViewportBead);
>>>>> 
>>>>> 				COMPILE::SWF {
>>>>> 					_contentArea.percentWidth = 100;
>>>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>>>> 
>>>>>           super.strand = value;
>>>>> 
>>>>> -			// If the Panel was given a layout, transfer it to the content
>>>>> area.
>>>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout) as
>>>>> IBeadLayout;
>>>>> -			if (layoutBead) {
>>>>> -				value.removeBead(layoutBead);
>>>>> -
>>>>> -				var contentLayout:IBeadLayout =
>>>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>>>> -				if (contentLayout) {
>>>>> -					_contentArea.removeBead(contentLayout);
>>>>> -				}
>>>>> -				_contentArea.addBead(layoutBead);
>>>>> -			}
>>>>> -
>>>>> -			// If the Panel was given a viewport, transfer it to the content
>>>>> area.
>>>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>>>> IViewport;
>>>>> -			if (viewportBead) {
>>>>> -				value.removeBead(viewportBead);
>>>>> -				_contentArea.addBead(viewportBead);
>>>>> -			}
>>>>> -
>>>>> 			if (contentArea.parent == null) {
>>>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>>>> 			}
>>>>> 
>>>>> 			// Now give the Panel its own layout
>>>>> -			layoutBead = new VerticalFlexLayout();
>>>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>>>> 			value.addBead(layoutBead);
>>>>> 		}
>>>>> 
>>>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>>>> 		override protected function completeSetup():void
>>>>> 		{
>>>>> 			super.completeSetup();
>>>>> -			
>>>>> +
>>>>> 			performLayout(null);
>>>>> 		}
>>>>> 
>>>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>>>> 			performLayout(event);
>>>>> 		}
>>>>> -		
>>>>> +
>>>>> 		private function handleClose(event:Event):void
>>>>> 		{
>>>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>>>> 		}
>>>>> -		
>>>>> +
>>>>> 	}
>>>>> }
>>>>> 
>>>>> -- 
>>>>> To stop receiving notification emails like this one, please contact
>>>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>>>> 
>>> 
>> 
> 


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Peter Ent <pe...@adobe.com.INVALID>.
I saw that Container worked, but how do you get labels on them?
—peter


On 11/9/17, 9:54 AM, "Harbs" <ha...@gmail.com> wrote:

>Inside the js:Array should be Container elements.
>
>I’m using it in production.
>
>> On Nov 9, 2017, at 4:28 PM, Peter Ent <pe...@adobe.com.INVALID> wrote:
>> 
>> I tested my change. I don't think it adversely affects Accordion at all,
>> but Accordion doesn't seem to be working correctly anyway.
>> 
>> I'm getting Panels inside of Panels. So if in the <fx:Array> supplied to
>> Accordion, I have a <js:Panel>, that Panel gives title to the Accordion
>> header, but then a panel becomes a child of that container. I think
>> Accordion needs a re-do.
>> 
>> The change I made to PanelView is very simple and I cannot see it having
>> any adverse affects. I also found an old email where I said I would make
>> an official AccordionExample as part of the examples/ directory. I'm
>>going
>> to take what I just put together and do that so we'll have something to
>> work with.
>> 
>> ‹peter
>> 
>> On 11/8/17, 5:23 PM, "Harbs" <ha...@gmail.com> wrote:
>> 
>>> Did you test if this effects Accordion?
>>> 
>>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org wrote:
>>>> 
>>>> This is an automated email from the ASF dual-hosted git repository.
>>>> 
>>>> pent pushed a commit to branch develop
>>>> in repository 
>>>> 
>>>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox
>>>>.a
>>>> 
>>>>pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974befcb
>>>>e4
>>>> 
>>>>86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636457
>>>>76
>>>> 
>>>>6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&res
>>>>er
>>>> ved=0
>>>> 
>>>> 
>>>> The following commit(s) were added to refs/heads/develop by this push:
>>>>    new 3e77b0c  PanelView no longer removes beads. Instead, it
>>>> transfers beads from the Panel to its Container content area.
>>>> 3e77b0c is described below
>>>> 
>>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>>> Author: Peter Ent <pe...@apache.org>
>>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>>> 
>>>>   PanelView no longer removes beads. Instead, it transfers beads from
>>>> the Panel to its Container content area.
>>>> ---
>>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>>> ++++++++++++----------
>>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>>> 
>>>> diff --git 
>>>> 
>>>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>s/
>>>> PanelView.as 
>>>> 
>>>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>s/
>>>> PanelView.as
>>>> index 67b0552..e1343ff 100644
>>>> --- 
>>>> 
>>>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>s/
>>>> PanelView.as
>>>> +++ 
>>>> 
>>>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/bead
>>>>s/
>>>> PanelView.as
>>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>>> 
>>>>            var host:UIBase = UIBase(value);
>>>> 
>>>> +			// Look for a layout and/or viewport bead on the host's beads
>>>>list.
>>>> If one
>>>> +			// is found, pull it off so it will not be added permanently
>>>> +			// to the strand.
>>>> +            var beads: Array = host.beads;
>>>> +            var transferLayoutBead: IBeadLayout;
>>>> +            var transferViewportBead: IViewport;
>>>> +			if (host.beads != null) {
>>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>>> +					if (host.beads[i] is IBeadLayout) {
>>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>>> +						host.beads.splice(i, 1);
>>>> +					}
>>>> +					else if (host.beads[i] is IViewport) {
>>>> +						transferViewportBead = host.beads[i] as IViewport
>>>> +						host.beads.splice(i, 1);
>>>> +					}
>>>> +				}
>>>> +			}
>>>> +
>>>>            if (!_titleBar) {
>>>>                _titleBar = new TitleBar();
>>>> 			}
>>>> -			
>>>> +
>>>> 			_titleBar.id = "panelTitleBar";
>>>> 
>>>> 			COMPILE::SWF {
>>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>>> 				_titleBar.element.style["flex-grow"] = "0";
>>>> 				_titleBar.element.style["order"] = "1";
>>>> 			}
>>>> -			
>>>> +
>>>> 			_titleBar.addEventListener("close", handleClose);
>>>> 
>>>> 			// replace the TitleBar's model with the Panel's model (it
>>>> implements ITitleBarModel) so that
>>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>>> 			if (!_contentArea) {
>>>> 				_contentArea = new Container();
>>>> 				_contentArea.id = "panelContent";
>>>> -				_contentArea.className = "PanelContent";
>>>> +				_contentArea.typeNames = "PanelContent";
>>>> +
>>>> +				// add the layout bead to the content area.
>>>> +				if (transferLayoutBead) _contentArea.addBead(transferLayoutBead);
>>>> +
>>>> +				// add the viewport bead to the content area.
>>>> +				if (transferViewportBead)
>>>> _contentArea.addBead(transferViewportBead);
>>>> 
>>>> 				COMPILE::SWF {
>>>> 					_contentArea.percentWidth = 100;
>>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>>> 
>>>>            super.strand = value;
>>>> 
>>>> -			// If the Panel was given a layout, transfer it to the content
>>>>area.
>>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout) as
>>>> IBeadLayout;
>>>> -			if (layoutBead) {
>>>> -				value.removeBead(layoutBead);
>>>> -
>>>> -				var contentLayout:IBeadLayout =
>>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>>> -				if (contentLayout) {
>>>> -					_contentArea.removeBead(contentLayout);
>>>> -				}
>>>> -				_contentArea.addBead(layoutBead);
>>>> -			}
>>>> -
>>>> -			// If the Panel was given a viewport, transfer it to the content
>>>> area.
>>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>>> IViewport;
>>>> -			if (viewportBead) {
>>>> -				value.removeBead(viewportBead);
>>>> -				_contentArea.addBead(viewportBead);
>>>> -			}
>>>> -
>>>> 			if (contentArea.parent == null) {
>>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>>> 			}
>>>> 
>>>> 			// Now give the Panel its own layout
>>>> -			layoutBead = new VerticalFlexLayout();
>>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>>> 			value.addBead(layoutBead);
>>>> 		}
>>>> 
>>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>>> 		override protected function completeSetup():void
>>>> 		{
>>>> 			super.completeSetup();
>>>> -			
>>>> +
>>>> 			performLayout(null);
>>>> 		}
>>>> 
>>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>>> 			performLayout(event);
>>>> 		}
>>>> -		
>>>> +
>>>> 		private function handleClose(event:Event):void
>>>> 		{
>>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>>> 		}
>>>> -		
>>>> +
>>>> 	}
>>>> }
>>>> 
>>>> -- 
>>>> To stop receiving notification emails like this one, please contact
>>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>>> 
>> 
>


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Harbs <ha...@gmail.com>.
Inside the js:Array should be Container elements.

I’m using it in production.

> On Nov 9, 2017, at 4:28 PM, Peter Ent <pe...@adobe.com.INVALID> wrote:
> 
> I tested my change. I don't think it adversely affects Accordion at all,
> but Accordion doesn't seem to be working correctly anyway.
> 
> I'm getting Panels inside of Panels. So if in the <fx:Array> supplied to
> Accordion, I have a <js:Panel>, that Panel gives title to the Accordion
> header, but then a panel becomes a child of that container. I think
> Accordion needs a re-do.
> 
> The change I made to PanelView is very simple and I cannot see it having
> any adverse affects. I also found an old email where I said I would make
> an official AccordionExample as part of the examples/ directory. I'm going
> to take what I just put together and do that so we'll have something to
> work with.
> 
> ‹peter
> 
> On 11/8/17, 5:23 PM, "Harbs" <ha...@gmail.com> wrote:
> 
>> Did you test if this effects Accordion?
>> 
>>> On Nov 8, 2017, at 8:00 PM, pent@apache.org wrote:
>>> 
>>> This is an automated email from the ASF dual-hosted git repository.
>>> 
>>> pent pushed a commit to branch develop
>>> in repository 
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.a
>>> pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974befcbe4
>>> 86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63645776
>>> 6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&reser
>>> ved=0
>>> 
>>> 
>>> The following commit(s) were added to refs/heads/develop by this push:
>>>    new 3e77b0c  PanelView no longer removes beads. Instead, it
>>> transfers beads from the Panel to its Container content area.
>>> 3e77b0c is described below
>>> 
>>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>>> Author: Peter Ent <pe...@apache.org>
>>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>>> 
>>>   PanelView no longer removes beads. Instead, it transfers beads from
>>> the Panel to its Container content area.
>>> ---
>>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>> ++++++++++++----------
>>> 1 file changed, 32 insertions(+), 26 deletions(-)
>>> 
>>> diff --git 
>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>> PanelView.as 
>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>> PanelView.as
>>> index 67b0552..e1343ff 100644
>>> --- 
>>> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>> PanelView.as
>>> +++ 
>>> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>> PanelView.as
>>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>>> 
>>>            var host:UIBase = UIBase(value);
>>> 
>>> +			// Look for a layout and/or viewport bead on the host's beads list.
>>> If one
>>> +			// is found, pull it off so it will not be added permanently
>>> +			// to the strand.
>>> +            var beads: Array = host.beads;
>>> +            var transferLayoutBead: IBeadLayout;
>>> +            var transferViewportBead: IViewport;
>>> +			if (host.beads != null) {
>>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>>> +					if (host.beads[i] is IBeadLayout) {
>>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>>> +						host.beads.splice(i, 1);
>>> +					}
>>> +					else if (host.beads[i] is IViewport) {
>>> +						transferViewportBead = host.beads[i] as IViewport
>>> +						host.beads.splice(i, 1);
>>> +					}
>>> +				}
>>> +			}
>>> +
>>>            if (!_titleBar) {
>>>                _titleBar = new TitleBar();
>>> 			}
>>> -			
>>> +
>>> 			_titleBar.id = "panelTitleBar";
>>> 
>>> 			COMPILE::SWF {
>>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>>> 				_titleBar.element.style["flex-grow"] = "0";
>>> 				_titleBar.element.style["order"] = "1";
>>> 			}
>>> -			
>>> +
>>> 			_titleBar.addEventListener("close", handleClose);
>>> 
>>> 			// replace the TitleBar's model with the Panel's model (it
>>> implements ITitleBarModel) so that
>>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>>> 			if (!_contentArea) {
>>> 				_contentArea = new Container();
>>> 				_contentArea.id = "panelContent";
>>> -				_contentArea.className = "PanelContent";
>>> +				_contentArea.typeNames = "PanelContent";
>>> +
>>> +				// add the layout bead to the content area.
>>> +				if (transferLayoutBead) _contentArea.addBead(transferLayoutBead);
>>> +
>>> +				// add the viewport bead to the content area.
>>> +				if (transferViewportBead)
>>> _contentArea.addBead(transferViewportBead);
>>> 
>>> 				COMPILE::SWF {
>>> 					_contentArea.percentWidth = 100;
>>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>>> 
>>>            super.strand = value;
>>> 
>>> -			// If the Panel was given a layout, transfer it to the content area.
>>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout) as
>>> IBeadLayout;
>>> -			if (layoutBead) {
>>> -				value.removeBead(layoutBead);
>>> -
>>> -				var contentLayout:IBeadLayout =
>>> _contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>>> -				if (contentLayout) {
>>> -					_contentArea.removeBead(contentLayout);
>>> -				}
>>> -				_contentArea.addBead(layoutBead);
>>> -			}
>>> -
>>> -			// If the Panel was given a viewport, transfer it to the content
>>> area.
>>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>> IViewport;
>>> -			if (viewportBead) {
>>> -				value.removeBead(viewportBead);
>>> -				_contentArea.addBead(viewportBead);
>>> -			}
>>> -
>>> 			if (contentArea.parent == null) {
>>> 				(_strand as Panel).$addElement(contentArea as IChild);
>>> 			}
>>> 
>>> 			// Now give the Panel its own layout
>>> -			layoutBead = new VerticalFlexLayout();
>>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>>> 			value.addBead(layoutBead);
>>> 		}
>>> 
>>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>>> 		override protected function completeSetup():void
>>> 		{
>>> 			super.completeSetup();
>>> -			
>>> +
>>> 			performLayout(null);
>>> 		}
>>> 
>>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>>> 			performLayout(event);
>>> 		}
>>> -		
>>> +
>>> 		private function handleClose(event:Event):void
>>> 		{
>>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>>> 		}
>>> -		
>>> +
>>> 	}
>>> }
>>> 
>>> -- 
>>> To stop receiving notification emails like this one, please contact
>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>> 
> 


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Peter Ent <pe...@adobe.com.INVALID>.
I tested my change. I don't think it adversely affects Accordion at all,
but Accordion doesn't seem to be working correctly anyway.

I'm getting Panels inside of Panels. So if in the <fx:Array> supplied to
Accordion, I have a <js:Panel>, that Panel gives title to the Accordion
header, but then a panel becomes a child of that container. I think
Accordion needs a re-do.

The change I made to PanelView is very simple and I cannot see it having
any adverse affects. I also found an old email where I said I would make
an official AccordionExample as part of the examples/ directory. I'm going
to take what I just put together and do that so we'll have something to
work with.

‹peter

On 11/8/17, 5:23 PM, "Harbs" <ha...@gmail.com> wrote:

>Did you test if this effects Accordion?
>
>> On Nov 8, 2017, at 8:00 PM, pent@apache.org wrote:
>> 
>> This is an automated email from the ASF dual-hosted git repository.
>> 
>> pent pushed a commit to branch develop
>> in repository 
>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.a
>>pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974befcbe4
>>86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63645776
>>6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&reser
>>ved=0
>> 
>> 
>> The following commit(s) were added to refs/heads/develop by this push:
>>     new 3e77b0c  PanelView no longer removes beads. Instead, it
>>transfers beads from the Panel to its Container content area.
>> 3e77b0c is described below
>> 
>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>> Author: Peter Ent <pe...@apache.org>
>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>> 
>>    PanelView no longer removes beads. Instead, it transfers beads from
>>the Panel to its Container content area.
>> ---
>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>++++++++++++----------
>> 1 file changed, 32 insertions(+), 26 deletions(-)
>> 
>> diff --git 
>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as 
>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as
>> index 67b0552..e1343ff 100644
>> --- 
>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as
>> +++ 
>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as
>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>> 
>>             var host:UIBase = UIBase(value);
>> 
>> +			// Look for a layout and/or viewport bead on the host's beads list.
>>If one
>> +			// is found, pull it off so it will not be added permanently
>> +			// to the strand.
>> +            var beads: Array = host.beads;
>> +            var transferLayoutBead: IBeadLayout;
>> +            var transferViewportBead: IViewport;
>> +			if (host.beads != null) {
>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>> +					if (host.beads[i] is IBeadLayout) {
>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>> +						host.beads.splice(i, 1);
>> +					}
>> +					else if (host.beads[i] is IViewport) {
>> +						transferViewportBead = host.beads[i] as IViewport
>> +						host.beads.splice(i, 1);
>> +					}
>> +				}
>> +			}
>> +
>>             if (!_titleBar) {
>>                 _titleBar = new TitleBar();
>> 			}
>> -			
>> +
>> 			_titleBar.id = "panelTitleBar";
>> 
>> 			COMPILE::SWF {
>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>> 				_titleBar.element.style["flex-grow"] = "0";
>> 				_titleBar.element.style["order"] = "1";
>> 			}
>> -			
>> +
>> 			_titleBar.addEventListener("close", handleClose);
>> 
>> 			// replace the TitleBar's model with the Panel's model (it
>>implements ITitleBarModel) so that
>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>> 			if (!_contentArea) {
>> 				_contentArea = new Container();
>> 				_contentArea.id = "panelContent";
>> -				_contentArea.className = "PanelContent";
>> +				_contentArea.typeNames = "PanelContent";
>> +
>> +				// add the layout bead to the content area.
>> +				if (transferLayoutBead) _contentArea.addBead(transferLayoutBead);
>> +
>> +				// add the viewport bead to the content area.
>> +				if (transferViewportBead)
>>_contentArea.addBead(transferViewportBead);
>> 
>> 				COMPILE::SWF {
>> 					_contentArea.percentWidth = 100;
>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>> 
>>             super.strand = value;
>> 
>> -			// If the Panel was given a layout, transfer it to the content area.
>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout) as
>>IBeadLayout;
>> -			if (layoutBead) {
>> -				value.removeBead(layoutBead);
>> -
>> -				var contentLayout:IBeadLayout =
>>_contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>> -				if (contentLayout) {
>> -					_contentArea.removeBead(contentLayout);
>> -				}
>> -				_contentArea.addBead(layoutBead);
>> -			}
>> -
>> -			// If the Panel was given a viewport, transfer it to the content
>>area.
>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>IViewport;
>> -			if (viewportBead) {
>> -				value.removeBead(viewportBead);
>> -				_contentArea.addBead(viewportBead);
>> -			}
>> -
>> 			if (contentArea.parent == null) {
>> 				(_strand as Panel).$addElement(contentArea as IChild);
>> 			}
>> 
>> 			// Now give the Panel its own layout
>> -			layoutBead = new VerticalFlexLayout();
>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>> 			value.addBead(layoutBead);
>> 		}
>> 
>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>> 		override protected function completeSetup():void
>> 		{
>> 			super.completeSetup();
>> -			
>> +
>> 			performLayout(null);
>> 		}
>> 
>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>> 			performLayout(event);
>> 		}
>> -		
>> +
>> 		private function handleClose(event:Event):void
>> 		{
>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>> 		}
>> -		
>> +
>> 	}
>> }
>> 
>> -- 
>> To stop receiving notification emails like this one, please contact
>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>


Re: [royale-asjs] branch develop updated: PanelView no longer removes beads. Instead, it transfers beads from the Panel to its Container content area.

Posted by Peter Ent <pe...@adobe.com.INVALID>.
No, I did not test how this affects Accordion. I will do so.
‹peter

On 11/8/17, 5:23 PM, "Harbs" <ha...@gmail.com> wrote:

>Did you test if this effects Accordion?
>
>> On Nov 8, 2017, at 8:00 PM, pent@apache.org wrote:
>> 
>> This is an automated email from the ASF dual-hosted git repository.
>> 
>> pent pushed a commit to branch develop
>> in repository 
>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.a
>>pache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7C%7C562974befcbe4
>>86610ce08d526f758a5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63645776
>>6135386019&sdata=5cJenPvUsEXBM5%2FqvCbC557p5fkLxsCZCP%2By0LIitH8%3D&reser
>>ved=0
>> 
>> 
>> The following commit(s) were added to refs/heads/develop by this push:
>>     new 3e77b0c  PanelView no longer removes beads. Instead, it
>>transfers beads from the Panel to its Container content area.
>> 3e77b0c is described below
>> 
>> commit 3e77b0ce0a9e967fd229a2218cd277d593b58e69
>> Author: Peter Ent <pe...@apache.org>
>> AuthorDate: Wed Nov 8 13:00:20 2017 -0500
>> 
>>    PanelView no longer removes beads. Instead, it transfers beads from
>>the Panel to its Container content area.
>> ---
>> .../org/apache/royale/html/beads/PanelView.as      | 58
>>++++++++++++----------
>> 1 file changed, 32 insertions(+), 26 deletions(-)
>> 
>> diff --git 
>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as 
>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as
>> index 67b0552..e1343ff 100644
>> --- 
>>a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as
>> +++ 
>>b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/
>>PanelView.as
>> @@ -133,10 +133,29 @@ package org.apache.royale.html.beads
>> 
>>             var host:UIBase = UIBase(value);
>> 
>> +			// Look for a layout and/or viewport bead on the host's beads list.
>>If one
>> +			// is found, pull it off so it will not be added permanently
>> +			// to the strand.
>> +            var beads: Array = host.beads;
>> +            var transferLayoutBead: IBeadLayout;
>> +            var transferViewportBead: IViewport;
>> +			if (host.beads != null) {
>> +				for(var i:int=host.beads.length-1; i >= 0; i--) {
>> +					if (host.beads[i] is IBeadLayout) {
>> +						transferLayoutBead = host.beads[i] as IBeadLayout;
>> +						host.beads.splice(i, 1);
>> +					}
>> +					else if (host.beads[i] is IViewport) {
>> +						transferViewportBead = host.beads[i] as IViewport
>> +						host.beads.splice(i, 1);
>> +					}
>> +				}
>> +			}
>> +
>>             if (!_titleBar) {
>>                 _titleBar = new TitleBar();
>> 			}
>> -			
>> +
>> 			_titleBar.id = "panelTitleBar";
>> 
>> 			COMPILE::SWF {
>> @@ -153,7 +172,7 @@ package org.apache.royale.html.beads
>> 				_titleBar.element.style["flex-grow"] = "0";
>> 				_titleBar.element.style["order"] = "1";
>> 			}
>> -			
>> +
>> 			_titleBar.addEventListener("close", handleClose);
>> 
>> 			// replace the TitleBar's model with the Panel's model (it
>>implements ITitleBarModel) so that
>> @@ -167,7 +186,13 @@ package org.apache.royale.html.beads
>> 			if (!_contentArea) {
>> 				_contentArea = new Container();
>> 				_contentArea.id = "panelContent";
>> -				_contentArea.className = "PanelContent";
>> +				_contentArea.typeNames = "PanelContent";
>> +
>> +				// add the layout bead to the content area.
>> +				if (transferLayoutBead) _contentArea.addBead(transferLayoutBead);
>> +
>> +				// add the viewport bead to the content area.
>> +				if (transferViewportBead)
>>_contentArea.addBead(transferViewportBead);
>> 
>> 				COMPILE::SWF {
>> 					_contentArea.percentWidth = 100;
>> @@ -195,31 +220,12 @@ package org.apache.royale.html.beads
>> 
>>             super.strand = value;
>> 
>> -			// If the Panel was given a layout, transfer it to the content area.
>> -			var layoutBead:IBeadLayout = value.getBeadByType(IBeadLayout) as
>>IBeadLayout;
>> -			if (layoutBead) {
>> -				value.removeBead(layoutBead);
>> -
>> -				var contentLayout:IBeadLayout =
>>_contentArea.getBeadByType(IBeadLayout) as IBeadLayout;
>> -				if (contentLayout) {
>> -					_contentArea.removeBead(contentLayout);
>> -				}
>> -				_contentArea.addBead(layoutBead);
>> -			}
>> -
>> -			// If the Panel was given a viewport, transfer it to the content
>>area.
>> -			var viewportBead:IViewport = value.getBeadByType(IViewport) as
>>IViewport;
>> -			if (viewportBead) {
>> -				value.removeBead(viewportBead);
>> -				_contentArea.addBead(viewportBead);
>> -			}
>> -
>> 			if (contentArea.parent == null) {
>> 				(_strand as Panel).$addElement(contentArea as IChild);
>> 			}
>> 
>> 			// Now give the Panel its own layout
>> -			layoutBead = new VerticalFlexLayout();
>> +			var layoutBead:IBeadLayout = new VerticalFlexLayout();
>> 			value.addBead(layoutBead);
>> 		}
>> 
>> @@ -247,7 +253,7 @@ package org.apache.royale.html.beads
>> 		override protected function completeSetup():void
>> 		{
>> 			super.completeSetup();
>> -			
>> +
>> 			performLayout(null);
>> 		}
>> 
>> @@ -266,11 +272,11 @@ package org.apache.royale.html.beads
>> 			_contentArea.dispatchEvent(new Event("layoutNeeded"));
>> 			performLayout(event);
>> 		}
>> -		
>> +
>> 		private function handleClose(event:Event):void
>> 		{
>> 			IEventDispatcher(_strand).dispatchEvent(new Event("close"));
>> 		}
>> -		
>> +
>> 	}
>> }
>> 
>> -- 
>> To stop receiving notification emails like this one, please contact
>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>