Is there a list of all these options somewhere? My understanding was that only “as” coercions are skipped and not function-style coercions. (or whatever it’s called)
My point is that multiple calls to Language.as is wasteful. For example: It might be a good idea to have a coercion in the strand setter to make sure that the Strand is an IEventDispatcher. However, once it’s set, there’s no reason to have further Language.as calls every time the _strand is accessed as an IEventDispatcher. The same goes for multiple calls to UIBase() in the same function. In the case of UIBase, I don’t see how the result can be anything other than a UIBase considering it’s the factory creating it. If so, the Language.as call should probably be avoided completely. > On Aug 27, 2017, at 8:33 AM, Alex Harui <aha...@adobe.com.INVALID> wrote: > > I'm not sure I understand. Why is this not what's needed? Just because > you are trying to get the compiler to not complain? There is a > skipFunctionCoercions option that turns off all calls to Language.is. We > don't have a directive per occurrence, but I suppose we could. > > -Alex > > On 8/26/17, 9:41 PM, "Harbs" <harbs.li...@gmail.com> wrote: > >> FYI: >> >> The pattern of MyClass(myObject) will always produce JS code which calls >> Language.as which throws an RTE if the object cannot be coerced as the >> class. Using compiler options to ignore coercion has no effect on this >> case. >> >> Most of the time, this is not what’s needed. >> >> Generally a better pattern is (myObject as MyClass). This will produce JS >> code which calls Language.as unless coercion is ignored in which case the >> cast is simply dropped and more efficient JS code is used. >> >> There are a number of casts to IEventDispatcher and UIBase which should >> probably be redone. >> >> Thanks, >> Harbs >> >>> On Aug 24, 2017, at 12:53 AM, pio...@apache.org wrote: >>> >>> FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData to >>> TabsDynamicItemsRendererFactoryForArrayListData >>> - Update TabsDynamicItemsRendererFactoryForArrayListData with new >>> implementation of DynamicItemsRendererFactoryForArrayListData >>> - Update example MDLDynamicTabsExample >>> >>> >>> Project: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Frepo&data=02%7C01%7C%7C468a0ef52 >>> 6744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363 >>> 94056917929660&sdata=ywP24lHiNv9U2%2FYYts%2FExMJf3XjnY%2BUJZ%2FW5BekcEFo% >>> 3D&reserved=0 >>> Commit: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fcommit%2F5b8f1c58&data=02%7C01%7 >>> C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7 >>> C0%7C0%7C636394056917929660&sdata=yieFxBWlW9k%2ByWpzlHwaFRt71MWQAAbyh9uGm >>> klciVQ%3D&reserved=0 >>> Tree: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Ftree%2F5b8f1c58&data=02%7C01%7C% >>> 7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0 >>> %7C0%7C636394056917929660&sdata=lx5%2F2Bchvdta6%2B3GLNbsU1QxjOo3XVCU9w0Jb >>> fhiGf0%3D&reserved=0 >>> Diff: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fdiff%2F5b8f1c58&data=02%7C01%7C% >>> 7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0 >>> %7C0%7C636394056917929660&sdata=8kjuuPIDmkRV77SkM8P3vTzOQw9eVM3wicCZ6deva >>> Cg%3D&reserved=0 >>> >>> Branch: refs/heads/develop >>> Commit: 5b8f1c5898c776eb7470e855073833e68e794a6d >>> Parents: 56e467a >>> Author: piotrz <pio...@apache.org> >>> Authored: Wed Aug 23 23:53:09 2017 +0200 >>> Committer: piotrz <pio...@apache.org> >>> Committed: Wed Aug 23 23:53:09 2017 +0200 >>> >>> ---------------------------------------------------------------------- >>> .../src/main/flex/views/InitialView.mxml | 24 ++- >>> .../src/main/resources/mdl-styles.css | 2 +- >>> .../src/main/flex/MDLClasses.as | 2 +- >>> ...namicItemsRendererFactoryForArrayListData.as | 108 ++++++++++ >>> .../TabsItemRendererFactoryForArrayListData.as | 206 >>> ------------------- >>> .../org/apache/flex/mdl/beads/views/TabsView.as | 6 +- >>> .../src/main/resources/defaults.css | 4 +- >>> 7 files changed, 129 insertions(+), 223 deletions(-) >>> ---------------------------------------------------------------------- >>> >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fexamples%2Ffle >>> xjs%2FMDLDynamicTabsExample%2Fsrc%2Fmain%2Fflex%2Fviews%2FInitialView.mxm >>> l&data=02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794 >>> aed2c178decee1%7C0%7C0%7C636394056917929660&sdata=6UIGaZ%2FWGyCUrbpACPlAW >>> bOsjRpPyTOXU%2FfYQ6pGe%2Fs%3D&reserved=0 >>> ---------------------------------------------------------------------- >>> diff --git >>> a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m >>> xml >>> b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m >>> xml >>> index 5523b6f..1482982 100644 >>> --- >>> a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m >>> xml >>> +++ >>> b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m >>> xml >>> @@ -39,14 +39,18 @@ limitations under the License. >>> <mdl:model> >>> <models:TabsModel id="tabsModel"/> >>> </mdl:model> >>> - <mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId" >>> labelField="label" className="customTabs" >>> - dataProvider="{tabsModel.tabs}" width="500"> >>> - <mdl:beads> >>> - <js:DataProviderCollectionChangeNotifier >>> sourceID="tabsModel" >>> propertyName="tabs" >>> - >>> destinationPropertyName="dataProvider" >>> changeEventName="dataProviderChanged" /> >>> - <js:DataProviderItemsChangeNotifier sourceID="tabsModel" >>> propertyName="tabs" >>> - >>> destinationPropertyName="dataProvider" >>> changeEventName="dataProviderChanged" /> >>> - </mdl:beads> >>> - </mdl:Tabs> >>> - <mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/> >>> + <mdl:GridCell column="6"> >>> + <mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId" >>> labelField="label" className="customTabs" >>> + dataProvider="{tabsModel.tabs}" width="500"> >>> + <mdl:beads> >>> + <js:DataProviderCollectionChangeNotifier >>> sourceID="tabsModel" >>> propertyName="tabs" >>> + >>> destinationPropertyName="dataProvider" >>> changeEventName="dataProviderChanged" /> >>> + <js:DataProviderItemsChangeNotifier >>> sourceID="tabsModel" >>> propertyName="tabs" >>> + >>> destinationPropertyName="dataProvider" >>> changeEventName="dataProviderChanged" /> >>> + </mdl:beads> >>> + </mdl:Tabs> >>> + </mdl:GridCell> >>> + <mdl:GridCell> >>> + <mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/> >>> + </mdl:GridCell> >>> </mdl:Grid> >>> \ No newline at end of file >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fexamples%2Ffle >>> xjs%2FMDLDynamicTabsExample%2Fsrc%2Fmain%2Fresources%2Fmdl-styles.css&dat >>> a=02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c >>> 178decee1%7C0%7C0%7C636394056917929660&sdata=nEVi%2BuNLD%2Bo5kGBb7oLC3XmW >>> gUYbuPO7RD3S919OZdA%3D&reserved=0 >>> ---------------------------------------------------------------------- >>> diff --git >>> a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css >>> >>> b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css >>> index 8d52a54..e713389 100644 >>> --- >>> a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css >>> +++ >>> b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css >>> @@ -27,5 +27,5 @@ >>> { >>> IItemRenderer: >>> ClassReference("itemRenderers.CustomTabBarPanelItemRenderer"); >>> IBeadModel: >>> ClassReference("org.apache.flex.mdl.beads.models.TabArrayListModel"); >>> - IDataProviderItemRendererMapper: >>> ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray >>> ListData"); >>> + IDataProviderItemRendererMapper: >>> ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory >>> ForArrayListData"); >>> } >>> \ No newline at end of file >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp >>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2FMDLClasses.as&data=02% >>> 7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178de >>> cee1%7C0%7C0%7C636394056917929660&sdata=RMYR%2BVdF6xwn%2FTckqgg2cLec5J8nm >>> N9rXekVroqa7lc%3D&reserved=0 >>> ---------------------------------------------------------------------- >>> diff --git >>> a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as >>> b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as >>> index d9ac1ac..00ffe9d 100644 >>> --- a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as >>> +++ b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as >>> @@ -28,7 +28,7 @@ package >>> internal class MDLClasses >>> { >>> import >>> org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayData; >>> TabsItemRendererFactoryForArrayData; >>> - import >>> org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData; >>> TabsItemRendererFactoryForArrayListData; >>> + import >>> org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData >>> ; TabsDynamicItemsRendererFactoryForArrayListData; >>> import org.apache.flex.mdl.beads.models.TabArrayModel; >>> TabArrayModel; >>> import org.apache.flex.mdl.beads.models.TabArrayListModel; >>> TabArrayListModel; >>> import org.apache.flex.mdl.beads.models.ToastModel; ToastModel; >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp >>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F >>> mdl%2Fbeads%2FTabsDynamicItemsRendererFactoryForArrayListData.as&data=02% >>> 7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178de >>> cee1%7C0%7C0%7C636394056917929660&sdata=%2BapbeLMt3Jv2PIDUOvAjWptKCMWp%2B >>> mTKXx06sbZMn80%3D&reserved=0 >>> ---------------------------------------------------------------------- >>> diff --git >>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as >>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as >>> new file mode 100644 >>> index 0000000..371f79b >>> --- /dev/null >>> +++ >>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as >>> @@ -0,0 +1,108 @@ >>> >>> +//////////////////////////////////////////////////////////////////////// >>> //////// >>> +// >>> +// Licensed to the Apache Software Foundation (ASF) under one or more >>> +// contributor license agreements. See the NOTICE file distributed >>> with >>> +// this work for additional information regarding copyright ownership. >>> +// The ASF licenses this file to You under the Apache License, >>> Version 2.0 >>> +// (the "License"); you may not use this file except in compliance >>> with >>> +// the License. You may obtain a copy of the License at >>> +// >>> +// >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach >>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C468a0ef526744f407ac408d4 >>> ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636394056917929660& >>> sdata=eby%2BNBek4IgNDs2RDn%2F%2F4Gf62h70N7cAe0zfQbmRRqY%3D&reserved=0 >>> +// >>> +// Unless required by applicable law or agreed to in writing, software >>> +// distributed under the License is distributed on an "AS IS" BASIS, >>> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>> implied. >>> +// See the License for the specific language governing permissions and >>> +// limitations under the License. >>> +// >>> >>> +//////////////////////////////////////////////////////////////////////// >>> //////// >>> +package org.apache.flex.mdl.beads >>> +{ >>> + import org.apache.flex.collections.IArrayList; >>> + import org.apache.flex.core.IListPresentationModel; >>> + import org.apache.flex.events.CollectionEvent; >>> + >>> + import org.apache.flex.events.IEventDispatcher; >>> + import >>> org.apache.flex.html.beads.DynamicItemsRendererFactoryForArrayListData; >>> + import org.apache.flex.mdl.beads.models.ITabModel; >>> + import org.apache.flex.mdl.supportClasses.ITabItemRenderer; >>> + import org.apache.flex.events.Event; >>> + >>> + >>> [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRender >>> erEvent")] >>> + >>> + /** >>> + * The TabsDynamicItemsRendererFactoryForArrayListData class >>> reads an >>> + * array of data and creates an item renderer for every >>> + * ITabItemRenderer in the array. >>> + * >>> + * @langversion 3.0 >>> + * @playerversion Flash 10.2 >>> + * @playerversion AIR 2.6 >>> + * @productversion FlexJS 0.8 >>> + */ >>> + public class TabsDynamicItemsRendererFactoryForArrayListData >>> extends DynamicItemsRendererFactoryForArrayListData >>> + { >>> + public function >>> TabsDynamicItemsRendererFactoryForArrayListData(target:Object = null) >>> + { >>> + super(target); >>> + } >>> + >>> + protected var tabsIdField:String; >>> + >>> + /** >>> + * finish setup >>> + * >>> + * @langversion 3.0 >>> + * @playerversion Flash 10.2 >>> + * @playerversion AIR 2.6 >>> + * @productversion FlexJS 0.8 >>> + */ >>> + override protected function initComplete(event:Event):void >>> + { >>> + var model:ITabModel = _strand.getBeadByType(ITabModel) as >>> ITabModel; >>> + tabsIdField = model.tabIdField; >>> + >>> + super.initComplete(event); >>> + } >>> + >>> + override protected function >>> dataProviderChangeHandler(event:Event):void >>> + { >>> + var dp:IArrayList = dataProviderModel.dataProvider as >>> IArrayList; >>> + if (!dp) >>> + return; >>> + >>> + dataGroup.removeAllItemRenderers(); >>> + >>> + var presentationModel:IListPresentationModel = >>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel; >>> + >>> + var n:int = dp.length; >>> + for (var i:int = 0; i < n; i++) >>> + { >>> + var ir:ITabItemRenderer = >>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer; >>> + ir.tabIdField = tabsIdField; >>> + >>> + var item:Object = dp.getItemAt(i); >>> + fillRenderer(i, item, ir, presentationModel); >>> + } >>> + >>> + IEventDispatcher(_strand).dispatchEvent(new >>> Event("itemsCreated")); >>> + } >>> + >>> + override protected function >>> itemAddedHandler(event:CollectionEvent):void >>> + { >>> + var dp:IArrayList = dataProviderModel.dataProvider as >>> IArrayList; >>> + if (!dp) >>> + return; >>> + >>> + var presentationModel:IListPresentationModel = >>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel; >>> + >>> + var ir:ITabItemRenderer = >>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer; >>> + ir.tabIdField = tabsIdField; >>> + >>> + var index:int = dp.length - 1; >>> + fillRenderer(index, event.item, ir, presentationModel); >>> + >>> + IEventDispatcher(_strand).dispatchEvent(new >>> Event("itemsCreated")); >>> + } >>> + } >>> +} >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp >>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F >>> mdl%2Fbeads%2FTabsItemRendererFactoryForArrayListData.as&data=02%7C01%7C% >>> 7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0 >>> %7C0%7C636394056917929660&sdata=ed9O6dzBKiMa5HKK7MQuoOfOuyFksehYMp3ZokvwH >>> vc%3D&reserved=0 >>> ---------------------------------------------------------------------- >>> diff --git >>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/TabsItemRendererFactoryForArrayListData.as >>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/TabsItemRendererFactoryForArrayListData.as >>> deleted file mode 100644 >>> index c323332..0000000 >>> --- >>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/TabsItemRendererFactoryForArrayListData.as >>> +++ /dev/null >>> @@ -1,206 +0,0 @@ >>> >>> -//////////////////////////////////////////////////////////////////////// >>> //////// >>> -// >>> -// Licensed to the Apache Software Foundation (ASF) under one or more >>> -// contributor license agreements. See the NOTICE file distributed >>> with >>> -// this work for additional information regarding copyright ownership. >>> -// The ASF licenses this file to You under the Apache License, >>> Version 2.0 >>> -// (the "License"); you may not use this file except in compliance >>> with >>> -// the License. You may obtain a copy of the License at >>> -// >>> -// >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach >>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C468a0ef526744f407ac408d4 >>> ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636394056917929660& >>> sdata=eby%2BNBek4IgNDs2RDn%2F%2F4Gf62h70N7cAe0zfQbmRRqY%3D&reserved=0 >>> -// >>> -// Unless required by applicable law or agreed to in writing, software >>> -// distributed under the License is distributed on an "AS IS" BASIS, >>> -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>> implied. >>> -// See the License for the specific language governing permissions and >>> -// limitations under the License. >>> -// >>> >>> -//////////////////////////////////////////////////////////////////////// >>> //////// >>> -package org.apache.flex.mdl.beads >>> -{ >>> - import org.apache.flex.collections.IArrayList; >>> - import org.apache.flex.core.IBead; >>> - import org.apache.flex.core.IDataProviderItemRendererMapper; >>> - import org.apache.flex.core.IItemRendererClassFactory; >>> - import org.apache.flex.core.IItemRendererParent; >>> - import org.apache.flex.core.IListPresentationModel; >>> - import org.apache.flex.core.IStrand; >>> - import org.apache.flex.core.SimpleCSSStyles; >>> - import org.apache.flex.core.UIBase; >>> - import org.apache.flex.core.ValuesManager; >>> - import org.apache.flex.events.CollectionEvent; >>> - >>> - import org.apache.flex.events.EventDispatcher; >>> - import org.apache.flex.events.IEventDispatcher; >>> - import org.apache.flex.html.beads.IListView; >>> - import org.apache.flex.mdl.beads.models.ITabModel; >>> - import org.apache.flex.mdl.supportClasses.ITabItemRenderer; >>> - import org.apache.flex.events.Event; >>> - >>> - >>> [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRender >>> erEvent")] >>> - >>> - /** >>> - * The TabsItemRendererFactoryForArrayListData class reads an >>> - * array of data and creates an item renderer for every >>> - * ITabItemRenderer in the array. >>> - * >>> - * @langversion 3.0 >>> - * @playerversion Flash 10.2 >>> - * @playerversion AIR 2.6 >>> - * @productversion FlexJS 0.8 >>> - */ >>> - public class TabsItemRendererFactoryForArrayListData extends >>> EventDispatcher implements IBead, IDataProviderItemRendererMapper >>> - { >>> - public function >>> TabsItemRendererFactoryForArrayListData(target:Object = null) >>> - { >>> - super(target); >>> - } >>> - >>> - protected var dataProviderModel:ITabModel; >>> - >>> - protected var labelField:String; >>> - protected var tabsIdField:String; >>> - >>> - private var _strand:IStrand; >>> - >>> - /** >>> - * @copy org.apache.flex.core.IBead#strand >>> - * >>> - * @langversion 3.0 >>> - * @playerversion Flash 10.2 >>> - * @playerversion AIR 2.6 >>> - * @productversion FlexJS 0.8 >>> - */ >>> - public function set strand(value:IStrand):void >>> - { >>> - _strand = value; >>> - >>> IEventDispatcher(value).addEventListener("initComplete",finishSetup); >>> - } >>> - >>> - /** >>> - * finish setup >>> - * >>> - * @langversion 3.0 >>> - * @playerversion Flash 10.2 >>> - * @playerversion AIR 2.6 >>> - * @productversion FlexJS 0.8 >>> - */ >>> - private function finishSetup(event:Event):void >>> - { >>> - >>> IEventDispatcher(_strand).removeEventListener("initComplete",finishSetup) >>> ; >>> - >>> - dataProviderModel = _strand.getBeadByType(ITabModel) as >>> ITabModel; >>> - var listView:IListView = _strand.getBeadByType(IListView) >>> as IListView; >>> - dataGroup = listView.dataGroup; >>> - dataProviderModel.addEventListener("dataProviderChanged", >>> dataProviderChangeHandler); >>> - >>> dataProviderModel.addEventListener(CollectionEvent.ITEM_ADDED, >>> itemAddedHandler); >>> - >>> - tabsIdField = dataProviderModel.tabIdField; >>> - labelField = dataProviderModel.labelField; >>> - >>> - dataProviderChangeHandler(null); >>> - } >>> - >>> - private var _itemRendererFactory:IItemRendererClassFactory; >>> - >>> - /** >>> - * The org.apache.flex.core.IItemRendererClassFactory used >>> - * to generate instances of item renderers. >>> - * >>> - * @langversion 3.0 >>> - * @playerversion Flash 10.2 >>> - * @playerversion AIR 2.6 >>> - * @productversion FlexJS 0.8 >>> - */ >>> - public function get >>> itemRendererFactory():IItemRendererClassFactory >>> - { >>> - if (_itemRendererFactory == null) { >>> - var factory:IItemRendererClassFactory = >>> _strand.getBeadByType(IItemRendererClassFactory) as >>> IItemRendererClassFactory; >>> - if (factory == null) { >>> - factory = new >>> (ValuesManager.valuesImpl.getValue(_strand, >>> "iItemRendererClassFactory")) as IItemRendererClassFactory; >>> - _strand.addBead(factory); >>> - } >>> - _itemRendererFactory = factory; >>> - } >>> - return _itemRendererFactory; >>> - } >>> - >>> - /** >>> - * @private >>> - */ >>> - public function set >>> itemRendererFactory(value:IItemRendererClassFactory):void >>> - { >>> - _itemRendererFactory = value; >>> - } >>> - >>> - /** >>> - * The org.apache.flex.core.IItemRendererParent that will >>> - * parent the item renderers. >>> - * >>> - * @langversion 3.0 >>> - * @playerversion Flash 10.2 >>> - * @playerversion AIR 2.6 >>> - * @productversion FlexJS 0.8 >>> - */ >>> - protected var dataGroup:IItemRendererParent; >>> - >>> - protected function dataProviderChangeHandler(event:Event):void >>> - { >>> - var dp:IArrayList = dataProviderModel.dataProvider as >>> IArrayList; >>> - if (!dp) >>> - return; >>> - >>> - dataGroup.removeAllItemRenderers(); >>> - >>> - var presentationModel:IListPresentationModel = >>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel; >>> - >>> - var n:int = dp.length; >>> - for (var i:int = 0; i < n; i++) >>> - { >>> - var ir:ITabItemRenderer = >>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer; >>> - dataGroup.addItemRenderer(ir); >>> - ir.index = i; >>> - ir.labelField = labelField; >>> - ir.tabIdField = tabsIdField; >>> - >>> - if (presentationModel) { >>> - var style:SimpleCSSStyles = new SimpleCSSStyles(); >>> - style.marginBottom = >>> presentationModel.separatorThickness; >>> - UIBase(ir).style = style; >>> - UIBase(ir).height = presentationModel.rowHeight; >>> - UIBase(ir).percentWidth = 100; >>> - } >>> - ir.data = dp.getItemAt(i); >>> - } >>> - >>> - IEventDispatcher(_strand).dispatchEvent(new >>> Event("itemsCreated")); >>> - } >>> - >>> - private function itemAddedHandler(event:CollectionEvent):void >>> - { >>> - var dp:IArrayList = dataProviderModel.dataProvider as >>> IArrayList; >>> - if (!dp) >>> - return; >>> - >>> - var presentationModel:IListPresentationModel = >>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel; >>> - >>> - var ir:ITabItemRenderer = >>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer; >>> - dataGroup.addItemRenderer(ir); >>> - >>> - ir.index = dp.length - 1; >>> - ir.labelField = labelField; >>> - ir.tabIdField = tabsIdField; >>> - >>> - if (presentationModel) { >>> - var style:SimpleCSSStyles = new SimpleCSSStyles(); >>> - style.marginBottom = >>> presentationModel.separatorThickness; >>> - UIBase(ir).style = style; >>> - UIBase(ir).height = presentationModel.rowHeight; >>> - UIBase(ir).percentWidth = 100; >>> - } >>> - ir.data = event.item; >>> - >>> - IEventDispatcher(_strand).dispatchEvent(new >>> Event("itemsCreated")); >>> - } >>> - } >>> -} >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp >>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F >>> mdl%2Fbeads%2Fviews%2FTabsView.as&data=02%7C01%7C%7C468a0ef526744f407ac40 >>> 8d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363940569179296 >>> 60&sdata=664hX%2BBKf1rJvAy0khpJSiCJk4fe9hkbkvYCzVf6iTA%3D&reserved=0 >>> ---------------------------------------------------------------------- >>> diff --git >>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/views/TabsView.as >>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/views/TabsView.as >>> index ffe291a..34c09f2 100644 >>> --- >>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/views/TabsView.as >>> +++ >>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md >>> l/beads/views/TabsView.as >>> @@ -26,7 +26,7 @@ package org.apache.flex.mdl.beads.views >>> import org.apache.flex.core.IStrand; >>> import org.apache.flex.mdl.TabBar; >>> import org.apache.flex.mdl.TabBarPanel; >>> - import >>> org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData; >>> + import >>> org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData >>> ; >>> import org.apache.flex.mdl.supportClasses.ITabItemRenderer; >>> >>> /** >>> @@ -166,8 +166,8 @@ package org.apache.flex.mdl.beads.views >>> >>> public function isTabsDynamic():Boolean >>> { >>> - var >>> arrayListMapper:TabsItemRendererFactoryForArrayListData = >>> - >>> _strand.getBeadByType(IDataProviderItemRendererMapper) as >>> TabsItemRendererFactoryForArrayListData; >>> + var >>> arrayListMapper:TabsDynamicItemsRendererFactoryForArrayListData = >>> + >>> _strand.getBeadByType(IDataProviderItemRendererMapper) as >>> TabsDynamicItemsRendererFactoryForArrayListData; >>> return arrayListMapper != null; >>> } >>> } >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u >>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp >>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fresources%2Fdefaults.css&data >>> =02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c1 >>> 78decee1%7C0%7C0%7C636394056917929660&sdata=yM%2Bu3tP0EamD3bb7vDTMQqkqNqv >>> W4LrFU8c3JJ0jocY%3D&reserved=0 >>> ---------------------------------------------------------------------- >>> diff --git >>> a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css >>> b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css >>> index f8b3b05..9e5ece7 100644 >>> --- >>> a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css >>> +++ >>> b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css >>> @@ -122,7 +122,7 @@ Tabs >>> IBeadView: >>> ClassReference("org.apache.flex.mdl.beads.views.TabsView"); >>> IBeadModel: >>> ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel"); >>> IBeadLayout: ClassReference(null); >>> - IDataProviderItemRendererMapper: >>> ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray >>> ListData"); >>> + IDataProviderItemRendererMapper: >>> ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory >>> ForArrayListData"); >>> IItemRendererClassFactory: >>> ClassReference("org.apache.flex.core.ItemRendererClassFactory"); >>> IItemRenderer: >>> ClassReference("org.apache.flex.mdl.itemRenderers.TabBarPanelItemRenderer >>> "); >>> } >>> @@ -132,7 +132,7 @@ TabBar >>> IBeadView: >>> ClassReference("org.apache.flex.mdl.beads.views.TabBarView"); >>> IBeadModel: >>> ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel"); >>> IBeadLayout: ClassReference(null); >>> - IDataProviderItemRendererMapper: >>> ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray >>> ListData"); >>> + IDataProviderItemRendererMapper: >>> ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory >>> ForArrayListData"); >>> IItemRendererClassFactory: >>> ClassReference("org.apache.flex.core.ItemRendererClassFactory"); >>> IItemRenderer: >>> ClassReference("org.apache.flex.mdl.itemRenderers.TabBarButtonTabsItemRen >>> derer"); >>> } >>> >> >