Add Tabs and TabBar with dataProvider usage to MDL Example

Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/b7a833d7
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/b7a833d7
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/b7a833d7

Branch: refs/heads/feature/fontawesome
Commit: b7a833d7db8ed4282194cef598c03a279e1b6931
Parents: 1e774e7
Author: piotrz <[email protected]>
Authored: Thu Jan 5 09:01:11 2017 +0100
Committer: piotrz <[email protected]>
Committed: Thu Jan 5 09:01:11 2017 +0100

----------------------------------------------------------------------
 .../flexjs/MDLExample/src/main/flex/Tabs.mxml   | 108 ++++++++++++++-----
 .../CustomTabBarPanelItemRenderer.mxml          |  36 +++++++
 .../src/main/flex/models/TabsModel.as           |  11 ++
 .../MDLExample/src/main/flex/vos/TabVO.as       |   2 +
 .../src/main/resources/mdl-styles.css           |  10 ++
 5 files changed, 143 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7a833d7/examples/flexjs/MDLExample/src/main/flex/Tabs.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MDLExample/src/main/flex/Tabs.mxml 
b/examples/flexjs/MDLExample/src/main/flex/Tabs.mxml
index 06efb1e..d6d36cd 100644
--- a/examples/flexjs/MDLExample/src/main/flex/Tabs.mxml
+++ b/examples/flexjs/MDLExample/src/main/flex/Tabs.mxml
@@ -20,31 +20,91 @@ limitations under the License.
 <mdl:TabBarPanel xmlns:fx="http://ns.adobe.com/mxml/2009";
                  xmlns:js="library://ns.apache.org/flexjs/basic"
                  xmlns:mdl="library://ns.apache.org/flexjs/mdl"
-                 xmlns="http://www.w3.org/1999/xhtml";>
+                 xmlns="http://www.w3.org/1999/xhtml"; xmlns:models="models.*">
 
-    <mdl:Grid className="demo-grid">
-        
-        <mdl:Tabs width="400">
-            <mdl:TabBar>
-                <mdl:TabBarButton text="Tab One" href="#tab1"/>
-                <mdl:TabBarButton text="Tab Two" href="#tab2"/>
-                <mdl:TabBarButton text="Tab Three" href="#tab3"/>
-            </mdl:TabBar>
-            
-            <mdl:TabBarPanel id="tab1">
-                <js:Label text="Tab 1"/>
-            </mdl:TabBarPanel>
+    <mdl:model>
+        <models:TabsModel id="tabsModel"/>
+    </mdl:model>
 
-            <mdl:TabBarPanel id="tab2">
-                <js:Label text="Tab 2"/>
-            </mdl:TabBarPanel>
-            
-            <mdl:TabBarPanel id="tab3">
-                <js:Label text="Tab 3"/>
-            </mdl:TabBarPanel>
-        </mdl:Tabs>
+    <mdl:Grid>
+
+        <mdl:GridCell column="1" percentWidth="100">
+            <mdl:Tabs width="400" tabIdField="tabId" 
className="customTabBarPanelItemRenderer">
+                <mdl:beads>
+                    <js:ConstantBinding
+                            sourceID="tabsModel"
+                            sourcePropertyName="tabs"
+                            destinationPropertyName="dataProvider" />
+                </mdl:beads>
+                <mdl:TabBar tabIdField="tabId" labelField="label">
+                    <mdl:beads>
+                        <js:ConstantBinding
+                                sourceID="tabsModel"
+                                sourcePropertyName="tabs"
+                                destinationPropertyName="dataProvider" />
+                    </mdl:beads>
+                </mdl:TabBar>
+            </mdl:Tabs>
+        </mdl:GridCell>
+        <mdl:GridCell column="1" percentWidth="100">
+            <mdl:NavigationLayout width="600">
+                <mdl:Header>
+                    <mdl:TabBar tabIdField="tabId" labelField="label" 
className="customTabBarSetup">
+                        <mdl:beads>
+                            <js:ConstantBinding
+                                    sourceID="tabsModel"
+                                    sourcePropertyName="tabsLayout"
+                                    destinationPropertyName="dataProvider" />
+                        </mdl:beads>
+                    </mdl:TabBar>
+                </mdl:Header>
+
+                <mdl:NavigationLayoutContent>
+                    <mdl:TabBarPanel id="starks_panel">
+                        <js:Ul>
+                            <js:Li><js:Label text="Eddard"/></js:Li>
+                            <js:Li><js:Label text="Catelyn"/></js:Li>
+                            <js:Li><js:Label text="Robb"/></js:Li>
+                            <js:Li><js:Label text="Sansa"/></js:Li>
+                            <js:Li><js:Label text="Brandon"/></js:Li>
+                            <js:Li><js:Label text="Arya"/></js:Li>
+                            <js:Li><js:Label text="Rickon"/></js:Li>
+                        </js:Ul>
+                    </mdl:TabBarPanel>
 
-        <mdl:Tabs width="400" ripple="true">
+                    <mdl:TabBarPanel id="lannisters_panel" isActive="true">
+                        <js:Ul>
+                            <js:Li><js:Label text="Tywin"/></js:Li>
+                            <js:Li><js:Label text="Cersei"/></js:Li>
+                            <js:Li><js:Label text="Jamie"/></js:Li>
+                            <js:Li><js:Label text="Tyrion"/></js:Li>
+                        </js:Ul>
+                    </mdl:TabBarPanel>
+
+                    <mdl:TabBarPanel id="targaryens_panel">
+                        <js:Ul>
+                            <js:Li><js:Label text="Viserys"/></js:Li>
+                            <js:Li><js:Label text="Daenerys"/></js:Li>
+                        </js:Ul>
+                    </mdl:TabBarPanel>
+                </mdl:NavigationLayoutContent>
+            </mdl:NavigationLayout>
+        </mdl:GridCell>
+     <!--   <mdl:Tabs width="400" ripple="true" tabIdField="tabId" 
className="customTabSetup">
+            <mdl:beads>
+                <js:ConstantBinding
+                        sourceID="tabsModel"
+                        sourcePropertyName="tabsLayout"
+                        destinationPropertyName="dataProvider" />
+            </mdl:beads>
+            <mdl:TabBar tabIdField="tabId" labelField="label" 
className="customTabBarSetup" forceLayout="true">
+                <mdl:beads>
+                    <js:ConstantBinding
+                            sourceID="tabsModel"
+                            sourcePropertyName="tabsLayout"
+                            destinationPropertyName="dataProvider" />
+                </mdl:beads>
+            </mdl:TabBar>
             <mdl:TabBar>
                 <mdl:TabBarButton text="Starks" href="#starks_panel"/>
                 <mdl:TabBarButton text="Lannisters" href="#lannisters_panel" 
isActive="true"/>
@@ -78,8 +138,8 @@ limitations under the License.
                     <js:Li><js:Label text="Daenerys"/></js:Li>
                 </js:Ul>
             </mdl:TabBarPanel>
-        </mdl:Tabs>
+        </mdl:Tabs>    -->
 
-    </mdl:Grid> 
+    </mdl:Grid>
 
 </mdl:TabBarPanel>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7a833d7/examples/flexjs/MDLExample/src/main/flex/itemRenderers/CustomTabBarPanelItemRenderer.mxml
----------------------------------------------------------------------
diff --git 
a/examples/flexjs/MDLExample/src/main/flex/itemRenderers/CustomTabBarPanelItemRenderer.mxml
 
b/examples/flexjs/MDLExample/src/main/flex/itemRenderers/CustomTabBarPanelItemRenderer.mxml
new file mode 100644
index 0000000..70f13d8
--- /dev/null
+++ 
b/examples/flexjs/MDLExample/src/main/flex/itemRenderers/CustomTabBarPanelItemRenderer.mxml
@@ -0,0 +1,36 @@
+<?xml version="1.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
+
+http://www.apache.org/licenses/LICENSE-2.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.
+
+-->
+<mdl:TabBarPanelItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009";
+                             xmlns:mdl="library://ns.apache.org/flexjs/mdl"
+                             xmlns:s="library://ns.apache.org/flexjs/basic">
+    <mdl:beads>
+        <s:ItemRendererDataBinding />
+    </mdl:beads>
+    <fx:Script><![CDATA[
+        import vos.TabVO;
+
+        [Bindable("dataChange")]
+        public function get tab():TabVO
+        {
+            return data as TabVO;
+        }
+        ]]></fx:Script>
+    <s:Label text="{tab.label}"/>
+</mdl:TabBarPanelItemRenderer>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7a833d7/examples/flexjs/MDLExample/src/main/flex/models/TabsModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MDLExample/src/main/flex/models/TabsModel.as 
b/examples/flexjs/MDLExample/src/main/flex/models/TabsModel.as
index 2662678..75b778e 100644
--- a/examples/flexjs/MDLExample/src/main/flex/models/TabsModel.as
+++ b/examples/flexjs/MDLExample/src/main/flex/models/TabsModel.as
@@ -30,9 +30,20 @@ package models
                 new TabVO("tab3", "Tab Three")
         ];
 
+        private var _tabsLayout:Array = [
+            new TabVO("starks_panel", "Starks"),
+            new TabVO("lannisters_panel", "Lannisters"),
+            new TabVO("targaryens_panel", "Targaryens")
+        ];
+
         public function get tabs():Array
         {
             return _tabs;
         }
+
+        public function get tabsLayout():Array
+        {
+            return _tabsLayout;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7a833d7/examples/flexjs/MDLExample/src/main/flex/vos/TabVO.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MDLExample/src/main/flex/vos/TabVO.as 
b/examples/flexjs/MDLExample/src/main/flex/vos/TabVO.as
index b202290..7a38a69 100644
--- a/examples/flexjs/MDLExample/src/main/flex/vos/TabVO.as
+++ b/examples/flexjs/MDLExample/src/main/flex/vos/TabVO.as
@@ -20,7 +20,9 @@ package vos
 {
     public class TabVO
     {
+        [Bindable]
         public var tabId:String;
+        [Bindable]
         public var label:String;
 
         public function TabVO(tabId:String, label:String)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7a833d7/examples/flexjs/MDLExample/src/main/resources/mdl-styles.css
----------------------------------------------------------------------
diff --git a/examples/flexjs/MDLExample/src/main/resources/mdl-styles.css 
b/examples/flexjs/MDLExample/src/main/resources/mdl-styles.css
index d4dda32..eac1a11 100644
--- a/examples/flexjs/MDLExample/src/main/resources/mdl-styles.css
+++ b/examples/flexjs/MDLExample/src/main/resources/mdl-styles.css
@@ -93,6 +93,16 @@ js|Image
   color: white;
 }
 
+.customTabBarPanelItemRenderer
+{
+    IItemRenderer: 
ClassReference("itemRenderers.CustomTabBarPanelItemRenderer");
+}
+
+.customTabBarSetup
+{
+    IItemRenderer: 
ClassReference("org.apache.flex.mdl.itemRenderers.TabBarButtonLayoutItemRenderer");
+}
+
 /* card wide */
 .demo-card-wide.mdl-card {
   width: 512px;

Reply via email to