Love this commit :)

On Fri, Jan 13, 2017, 20:34 <carlosrov...@apache.org> wrote:

> Repository: flex-asjs
> Updated Branches:
>   refs/heads/develop 2e52060f3 -> b0b41aefe
>
>
> MDL Table component and example initial implementation
>
>
> Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/b0b41aef
> Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/b0b41aef
> Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/b0b41aef
>
> Branch: refs/heads/develop
> Commit: b0b41aefe2a419d310c010299430ba56bf87d974
> Parents: 2e52060
> Author: Carlos Rovira <carlosrov...@apache.org>
> Authored: Fri Jan 13 20:34:17 2017 +0100
> Committer: Carlos Rovira <carlosrov...@apache.org>
> Committed: Fri Jan 13 20:34:17 2017 +0100
>
> ----------------------------------------------------------------------
>  .../src/main/flex/MainNavigation.mxml           |   1 +
>  .../flexjs/MDLExample/src/main/flex/Tables.mxml |  41 ++++++
>  .../src/main/flex/models/MainNavigationModel.as |   1 +
>  .../src/main/flex/models/TablesModel.as         |  41 ++++++
>  .../MDLExample/src/main/flex/vos/MaterialVO.as  |  35 +++++
>  .../main/flex/org/apache/flex/mdl/Navigation.as |   2 +-
>  .../src/main/flex/org/apache/flex/mdl/Table.as  |  30 ++--
>  .../flex/mdl/itemRenderers/TableItemRenderer.as | 145 +++++++++++++++++++
>  .../src/main/resources/defaults.css             |  10 ++
>  .../src/main/resources/mdl-manifest.xml         |   2 +
>  10 files changed, 293 insertions(+), 15 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/examples/flexjs/MDLExample/src/main/flex/MainNavigation.mxml
> ----------------------------------------------------------------------
> diff --git a/examples/flexjs/MDLExample/src/main/flex/MainNavigation.mxml
> b/examples/flexjs/MDLExample/src/main/flex/MainNavigation.mxml
> index f056f18..a2414b8 100644
> --- a/examples/flexjs/MDLExample/src/main/flex/MainNavigation.mxml
> +++ b/examples/flexjs/MDLExample/src/main/flex/MainNavigation.mxml
> @@ -74,6 +74,7 @@ limitations under the License.
>          <local:Toggles id="toggles_panel"/>
>          <local:Snackbar id="snackbar_panel"/>
>          <local:Lists id="lists_panel"/>
> +        <local:Tables id="tables_panel"/>
>          <local:Loading id="loading_panel"/>
>          <local:Menus id="menus_panel"/>
>          <local:Badges id="badges_panel"/>
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/examples/flexjs/MDLExample/src/main/flex/Tables.mxml
> ----------------------------------------------------------------------
> diff --git a/examples/flexjs/MDLExample/src/main/flex/Tables.mxml
> b/examples/flexjs/MDLExample/src/main/flex/Tables.mxml
> new file mode 100644
> index 0000000..a5591d7
> --- /dev/null
> +++ b/examples/flexjs/MDLExample/src/main/flex/Tables.mxml
> @@ -0,0 +1,41 @@
> +<?xml version="1.0" encoding="utf-8"?>
> +<!--
> +
> +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: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:models="models.*">
> +
> +    <mdl:model>
> +        <models:TablesModel/>
> +       </mdl:model>
> +
> +    <mdl:Grid>
> +        <mdl:Table labelField="materialName" shadow="2">
> +            <mdl:beads>
> +                <js:ConstantBinding
> +                    sourceID="model"
> +                    sourcePropertyName="materials"
> +                    destinationPropertyName="dataProvider" />
> +            </mdl:beads>
> +        </mdl:Table>
> +    </mdl:Grid>
> +
> +</mdl:TabBarPanel>
> \ No newline at end of file
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/examples/flexjs/MDLExample/src/main/flex/models/MainNavigationModel.as
> ----------------------------------------------------------------------
> diff --git
> a/examples/flexjs/MDLExample/src/main/flex/models/MainNavigationModel.as
> b/examples/flexjs/MDLExample/src/main/flex/models/MainNavigationModel.as
> index 5330ae4..12fbbf3 100644
> ---
> a/examples/flexjs/MDLExample/src/main/flex/models/MainNavigationModel.as
> +++
> b/examples/flexjs/MDLExample/src/main/flex/models/MainNavigationModel.as
> @@ -63,6 +63,7 @@ package models
>              new NavigationLinkVO("Snackbar", "snackbar_panel"),
>              new NavigationLinkVO("Toggles", "toggles_panel"),
>              new NavigationLinkVO("Lists", "lists_panel"),
> +            new NavigationLinkVO("Tables", "tables_panel"),
>              new NavigationLinkVO("Loading", "loading_panel"),
>              new NavigationLinkVO("Menu", "menus_panel"),
>              new NavigationLinkVO("Badges", "badges_panel"),
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/examples/flexjs/MDLExample/src/main/flex/models/TablesModel.as
> ----------------------------------------------------------------------
> diff --git
> a/examples/flexjs/MDLExample/src/main/flex/models/TablesModel.as
> b/examples/flexjs/MDLExample/src/main/flex/models/TablesModel.as
> new file mode 100644
> index 0000000..19e355e
> --- /dev/null
> +++ b/examples/flexjs/MDLExample/src/main/flex/models/TablesModel.as
> @@ -0,0 +1,41 @@
>
> +////////////////////////////////////////////////////////////////////////////////
> +//
> +//  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.
> +//
>
> +////////////////////////////////////////////////////////////////////////////////
> +package models
> +{
> +       import org.apache.flex.events.EventDispatcher;
> +       import vos.*;
> +
> +       public class TablesModel extends EventDispatcher
> +       {
> +               /**
> +                * Used in the Tables example.
> +                */
> +               private var _materials:Array = [
> +                       new MaterialVO("Acrylic (Transparent)", "25",
> "$2.90"),
> +                       new MaterialVO("Plywood (Birch)", "50", "$1.25"),
> +                       new MaterialVO("Laminate (Gold on Blue)", "10",
> "$2.35")
> +               ];
> +
> +               public function get materials():Array
> +               {
> +                       return _materials;
> +               }
> +
> +       }
> +}
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/examples/flexjs/MDLExample/src/main/flex/vos/MaterialVO.as
> ----------------------------------------------------------------------
> diff --git a/examples/flexjs/MDLExample/src/main/flex/vos/MaterialVO.as
> b/examples/flexjs/MDLExample/src/main/flex/vos/MaterialVO.as
> new file mode 100644
> index 0000000..b7dc69e
> --- /dev/null
> +++ b/examples/flexjs/MDLExample/src/main/flex/vos/MaterialVO.as
> @@ -0,0 +1,35 @@
>
> +////////////////////////////////////////////////////////////////////////////////
> +//
> +//  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.
> +//
>
> +////////////////////////////////////////////////////////////////////////////////
> +package vos
> +{
> +    [Bindable]
> +       public class MaterialVO
> +       {
> +               public function MaterialVO(materialName:String = null,
> quantity:String = null, unitPrice:String = null)
> +               {
> +                       this.materialName = materialName;
> +                       this.quantity = quantity;
> +                       this.unitPrice = unitPrice;
> +               }
> +
> +               public var materialName:String = "";
> +               public var quantity:String = "";
> +               public var unitPrice:String = "";
> +       }
> +}
> \ No newline at end of file
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Navigation.as
> ----------------------------------------------------------------------
> diff --git
> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Navigation.as
> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Navigation.as
> index a638d1e..708983d 100644
> ---
> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Navigation.as
> +++
> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Navigation.as
> @@ -64,7 +64,7 @@ package org.apache.flex.mdl
>                         positioner = element;
>              element.flexjs_wrapper = this;
>
> -            return positioner;
> +            return element;
>          }
>         }
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Table.as
> ----------------------------------------------------------------------
> diff --git
> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Table.as
> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Table.as
> index 0ac0377..b23b834 100644
> ---
> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Table.as
> +++
> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Table.as
> @@ -18,7 +18,7 @@
>
>  
> ////////////////////////////////////////////////////////////////////////////////
>  package org.apache.flex.mdl
>  {
> -       import org.apache.flex.core.ContainerBase;
> +       import org.apache.flex.mdl.List;
>
>      COMPILE::JS
>      {
> @@ -41,7 +41,7 @@ package org.apache.flex.mdl
>          *  @playerversion AIR 2.6
>          *  @productversion FlexJS 0.0
>          */
> -       public class Table extends ContainerBase
> +       public class Table extends List
>         {
>                 /**
>                  *  constructor.
> @@ -67,14 +67,8 @@ package org.apache.flex.mdl
>                         typeNames = "mdl-data-table mdl-js-data-table";
>
>              element = document.createElement('table') as
> WrappedHTMLElement;
> -            element.className = typeNames;
>
>                         positioner = element;
> -
> -            // absolute positioned children need a non-null
> -            // position value in the parent.  It might
> -            // get set to 'absolute' if the container is
> -            // also absolutely positioned
>              element.flexjs_wrapper = this;
>
>              return element;
> @@ -96,15 +90,20 @@ package org.apache.flex.mdl
>          }
>          public function set shadow(value:Number):void
>          {
> -                       if(value == 0 || value == 2 || value == 3 || value
> == 4 || value == 6 || value == 8 || value == 16)
> +                       COMPILE::JS
>                         {
> -                               _shadow = value;
> +                               element.classList.remove("mdl-shadow--" +
> _shadow + "dp");
> +
> +                               if(value == 2 || value == 3 || value == 4
> || value == 6 || value == 8 || value == 16)
> +                               {
> +                                       _shadow = value;
>
> -                               className += (_shadow != 0 ? "
> mdl-shadow--" + _shadow + "dp" : "");
> -                       }
> +
>  element.classList.add("mdl-shadow--" + _shadow + "dp");
> +                               }
> +                       }
>          }
>
> -               protected var _selectable:Boolean;
> +               protected var _selectable:Boolean = false;
>          /**
>                  *  A boolean flag to activate
> "mdl-data-table--selectable" effect selector.
>                  *  Applies all/individual selectable behavior (checkboxes)
> @@ -123,7 +122,10 @@ package org.apache.flex.mdl
>          {
>                         _selectable = value;
>
> -
>  element.classList.toggle("mdl-data-table--selectable", _selectable);
> +                       COMPILE::JS
> +            {
> +
>  element.classList.toggle("mdl-data-table--selectable", _selectable);
> +                       }
>          }
>         }
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/itemRenderers/TableItemRenderer.as
> ----------------------------------------------------------------------
> diff --git
> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/itemRenderers/TableItemRenderer.as
> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/itemRenderers/TableItemRenderer.as
> new file mode 100644
> index 0000000..c5ae510
> --- /dev/null
> +++
> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/itemRenderers/TableItemRenderer.as
> @@ -0,0 +1,145 @@
>
> +////////////////////////////////////////////////////////////////////////////////
> +//
> +//  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.
> +//
>
> +////////////////////////////////////////////////////////////////////////////////
> +package org.apache.flex.mdl.itemRenderers
> +{
> +    COMPILE::JS
> +    {
> +        import org.apache.flex.core.WrappedHTMLElement;
> +    }
> +
> +       import org.apache.flex.html.supportClasses.MXMLItemRenderer;
> +
> +       /**
> +        *  The TableItemRenderer defines the basic Item Renderer for a
> MDL Table Component.
> +        *
> +        *  @langversion 3.0
> +        *  @playerversion Flash 10.2
> +        *  @playerversion AIR 2.6
> +        *  @productversion FlexJS 0.0
> +        */
> +       public class TableItemRenderer extends MXMLItemRenderer
> +       {
> +               /**
> +                *  constructor.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               public function TableItemRenderer()
> +               {
> +                       super();
> +
> +            className = ""; //set to empty string avoid 'undefined'
> output when no class selector is assigned by user;
> +               }
> +
> +               private var _text:String = "";
> +
> +        /**
> +         *  The text of the heading
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +               public function get text():String
> +               {
> +            return _text;
> +               }
> +
> +               public function set text(value:String):void
> +               {
> +             _text = value;
> +               }
> +
> +               COMPILE::JS
> +        private var textNode:Text;
> +
> +               /**
> +                *  Sets the data value and uses the String version of the
> data for display.
> +                *
> +                *  @param Object data The object being displayed by the
> itemRenderer instance.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               override public function set data(value:Object):void
> +               {
> +                       super.data = value;
> +
> +            var text:String;
> +                       if (labelField || dataField) {
> +                text = String(value[labelField]);
> +            } else {
> +                text = String(value);
> +            }
> +
> +                       COMPILE::JS
> +                       {
> +                               if(textNode != null)
> +                               {
> +                                       textNode.nodeValue = text;
> +                               }
> +                       }
> +               }
> +
> +        /**
> +         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
> +         */
> +        COMPILE::JS
> +        override protected function createElement():WrappedHTMLElement
> +        {
> +            element = document.createElement('td') as WrappedHTMLElement;
> +
> +                       if(MXMLDescriptor == null)
> +                       {
> +                               textNode = document.createTextNode('') as
> Text;
> +                               element.appendChild(textNode);
> +                       }
> +
> +            positioner = element;
> +            element.flexjs_wrapper = this;
> +
> +            return element;
> +        }
> +
> +               private var _nonNumeric:Boolean;
> +        /**
> +         * Activate "mdl-data-table__cell--non-numeric" class selector,
> for use in table td item.
> +                * Optional
> +         */
> +        public function get nonNumeric():Boolean
> +        {
> +            return _nonNumeric;
> +        }
> +        public function set nonNumeric(value:Boolean):void
> +        {
> +            _nonNumeric = value;
> +
> +            COMPILE::JS
> +            {
> +
> element.classList.toggle("mdl-data-table__cell--non-numeric", _nonNumeric);
> +            }
> +        }
> +       }
> +}
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> ----------------------------------------------------------------------
> diff --git
> a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> index 9f2dbd6..566875e 100644
> ---
> a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> +++
> b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> @@ -56,6 +56,16 @@ List
>      IItemRenderer:
> ClassReference("org.apache.flex.mdl.itemRenderers.ListItemRenderer");
>  }
>
> +Table
> +{
> +    IBeadView: ClassReference("org.apache.flex.mdl.beads.views.ListView");
> +    IBeadModel:
> ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");
> +    IBeadLayout: ClassReference(null);
> /*"org.apache.flex.html.beads.layouts.VerticalLayout"*/
> +    IDataProviderItemRendererMapper:
> ClassReference("org.apache.flex.html.beads.DataItemRendererFactoryForArrayData");
> +    IItemRendererClassFactory:
> ClassReference("org.apache.flex.core.ItemRendererClassFactory");
> +    IItemRenderer:
> ClassReference("org.apache.flex.mdl.itemRenderers.TableItemRenderer");
> +}
> +
>  Navigation
>  {
>      IBeadView: ClassReference("org.apache.flex.mdl.beads.views.ListView");
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b0b41aef/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
> ----------------------------------------------------------------------
> diff --git
> a/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
> b/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
> index 1b8b2a0..b4d2c9a 100644
> ---
> a/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
> +++
> b/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
> @@ -56,6 +56,8 @@
>      <component id="ListItemSubTitle"
> class="org.apache.flex.mdl.beads.ListItemSubTitle"/>
>      <component id="ListItemSecondaryInfo"
> class="org.apache.flex.mdl.beads.ListItemSecondaryInfo"/>
>      <component id="ListItemTextBody"
> class="org.apache.flex.mdl.beads.ListItemTextBody"/>
> +    <component id="Table" class="org.apache.flex.mdl.Table"/>
> +    <component id="TableItemRenderer"
> class="org.apache.flex.mdl.itemRenderers.TableItemRenderer"/>
>      <component id="NavigationLayout"
> class="org.apache.flex.mdl.NavigationLayout"/>
>      <component id="LayoutTitle" class="org.apache.flex.mdl.LayoutTitle"/>
>      <component id="Navigation" class="org.apache.flex.mdl.Navigation"/>
>
>

Reply via email to