You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Alex Harui <ah...@adobe.com.INVALID> on 2017/08/27 05:33:02 UTC
Re: [2/2] git commit: [flex-asjs] [refs/heads/develop] - FLEX-35354 -
Rename TabsItemRendererFactoryForArrayListData to
TabsDynamicItemsRendererFactoryForArrayListData - Update
TabsDynamicItemsRendererFactoryForArrayListData with new implementation of
...
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" <ha...@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, piotrz@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 <pi...@apache.org>
>> Authored: Wed Aug 23 23:53:09 2017 +0200
>> Committer: piotrz <pi...@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");
>> }
>>
>
Re: [2/2] git commit: [flex-asjs] [refs/heads/develop] - FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData to TabsDynamicItemsRendererFactoryForArrayListData - Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of ...
Posted by Harbs <ha...@gmail.com>.
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 <ah...@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" <ha...@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, piotrz@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 <pi...@apache.org>
>>> Authored: Wed Aug 23 23:53:09 2017 +0200
>>> Committer: piotrz <pi...@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");
>>> }
>>>
>>
>