This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch feature/jewel-datagrid
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit bcc665c26dbbc97e27c35eed41770d30a470b93d
Author: Carlos Rovira <[email protected]>
AuthorDate: Mon Nov 25 13:05:33 2019 +0100

    jewel-datagrid: starting point creating placeholder and some support 
classes. Created SASS file to start the styling. Added DataGridColumn to 
manifest and removed from JewelClasses
---
 .../projects/Jewel/src/main/resources/defaults.css |  12 ++
 .../Jewel/src/main/resources/jewel-manifest.xml    |   3 +
 .../projects/Jewel/src/main/royale/JewelClasses.as |   1 -
 .../royale/org/apache/royale/jewel/DataGrid.as     | 196 +++++++++++++++++++++
 .../Jewel/src/main/sass/components/_datagrid.sass  |  99 +++++++++++
 .../projects/Jewel/src/main/sass/defaults.sass     |   1 +
 6 files changed, 311 insertions(+), 1 deletion(-)

diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css 
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 597a581..60f2a67 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -457,6 +457,18 @@ j|ComboBoxPopUp {
   IBeadView: 
ClassReference("org.apache.royale.jewel.beads.views.ComboBoxPopUpView");
 }
 
+j|DataGrid {
+  IChangePropagator: 
ClassReference("org.apache.royale.html.beads.DataGridColumnChangePropagator");
+  IDataGridPresentationModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridPresentationModel");
+  IBeadView: ClassReference("org.apache.royale.html.beads.DataGridView");
+  IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridModel");
+  IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout");
+  columnClass: 
ClassReference("org.apache.royale.html.supportClasses.DataGridColumnList");
+  columnContainerClass: 
ClassReference("org.apache.royale.html.DataGridButtonBar");
+  columnLayoutClass: 
ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout");
+  listAreaClass: 
ClassReference("org.apache.royale.html.beads.DataGridListArea");
+}
+
 .jewel.datechooser .jewel.table {
   min-width: 324px;
   min-height: 364px;
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml 
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index ecb6a12..b38ee40 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -43,6 +43,9 @@
     <component id="TableHeaderCell" 
class="org.apache.royale.jewel.supportClasses.table.TableHeaderCell"/>
     <component id="TableColumn" 
class="org.apache.royale.jewel.supportClasses.table.TableColumn"/>
 
+    <component id="DataGrid" class="org.apache.royale.jewel.DataGrid"/>
+    <component id="DataGridColumn" 
class="org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn"/>
+
     <component id="SimpleButton" 
class="org.apache.royale.jewel.supportClasses.button.SimpleButton"/>
     <component id="Button" class="org.apache.royale.jewel.Button"/>
     <component id="IconButton" class="org.apache.royale.jewel.IconButton"/>
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as 
b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index f180b51..7eb7101 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -103,7 +103,6 @@ package
         import org.apache.royale.jewel.supportClasses.Viewport; Viewport;
         import org.apache.royale.jewel.supportClasses.NoViewport; NoViewport;
         import 
org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport; 
ScrollingViewport;
-        import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn; 
DataGridColumn;
         import 
org.apache.royale.jewel.supportClasses.datechooser.DateChooserTable; 
DateChooserTable;
         import org.apache.royale.jewel.supportClasses.table.TBodyContentArea; 
TBodyContentArea;
         import org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp; 
ComboBoxPopUp;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
new file mode 100644
index 0000000..cd76f93
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
@@ -0,0 +1,196 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.royale.jewel
+{
+       import org.apache.royale.core.GroupBase;
+       import org.apache.royale.core.IBead;
+       import org.apache.royale.core.IChangePropagator;
+       import org.apache.royale.core.IDataGrid;
+       import org.apache.royale.core.IDataGridModel;
+       import org.apache.royale.core.IDataGridPresentationModel;
+       import org.apache.royale.core.ValuesManager;
+       import org.apache.royale.events.Event;
+       import org.apache.royale.utils.loadBeadFromValuesManager;
+       
+       [Event(name="change", type="org.apache.royale.events.Event")]
+       
+       /**
+        *  The DataGrid class displays a collection of data using columns and 
rows. Each
+        *  column represents a specific field in the data set; each row 
represents a specific
+        *  datum. The DataGrid is a composite component built with a 
org.apache.royale.html.ButtonBar 
+        *  for the column headers and a org.apache.royale.html.List for each 
column. The DataGrid's 
+        *  view bead (usually org.apache.royale.html.beads.DataGridView) 
constructs these parts while 
+        *  itemRenderer factories contruct the elements to display the data in 
each cell.
+        *  
+     *  @toplevel
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.7
+        */
+       public class DataGrid extends GroupBase implements IDataGrid
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function DataGrid()
+               {
+                       super();
+                       
+                       typeNames = "jewel datagrid";
+                       
+                       // set a reasonable default size
+                       width = 200;
+                       height = 200;
+               }
+               
+               /**
+                *  The array of 
org.apache.royale.html.supportClasses.DataGridColumns used to 
+                *  describe each column.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9
+                *  @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                */
+               public function get columns():Array
+               {
+                       return IDataGridModel(model).columns;
+               }
+               /**
+                * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                */
+               public function set columns(value:Array):void
+               {
+                       IDataGridModel(model).columns = value;
+               }
+               
+               /**
+                *  The object used to provide data to the 
org.apache.royale.html.DataGrid.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9
+                *  @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                */
+               public function get dataProvider():Object
+               {
+                       return IDataGridModel(model).dataProvider;
+               }
+               /**
+                * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                */
+               public function set dataProvider(value:Object):void
+               {
+                       IDataGridModel(model).dataProvider = value;
+               }
+               
+               /**
+                *  The currently selected row.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9
+                *  @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                */
+               [Bindable("change")]
+               public function get selectedIndex():int
+               {
+                       return IDataGridModel(model).selectedIndex;
+               }
+               /**
+                * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                */
+               public function set selectedIndex(value:int):void
+               {
+                       IDataGridModel(model).selectedIndex = value;
+               }
+               
+               /**
+                * @private
+                */
+               private var _presentationModel:IDataGridPresentationModel;
+               
+               /**
+                *  The DataGrid's presentation model
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9
+                *  @royaleignorecoercion 
org.apache.royale.core.IDataGridPresentationModel
+                *  @royaleignorecoercion org.apache.royale.core.IBead
+                */
+               public function get presentationModel():IBead
+               {
+                       if (_presentationModel == null) {
+                               var c:Class = 
ValuesManager.valuesImpl.getValue(this, "iDataGridPresentationModel");
+                               if (c) {
+                                       _presentationModel = new c() as 
IDataGridPresentationModel;
+                                       addBead(_presentationModel as IBead);
+                               }
+                       }
+                       
+                       return _presentationModel;
+               }
+               /**
+                * @royaleignorecoercion 
org.apache.royale.core.IDataGridPresentationModel
+                */
+               public function set presentationModel(value:IBead):void
+               {
+                       _presentationModel = value as 
IDataGridPresentationModel;
+               }
+                               
+               /**
+                *  The default height of each cell in every column
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9
+                *  @royaleignorecoercion 
org.apache.royale.core.IDataGridPresentationModel
+                */
+               public function get rowHeight():Number
+               {
+                       return (presentationModel as 
IDataGridPresentationModel).rowHeight;
+               }
+        /**
+         * @royaleignorecoercion 
org.apache.royale.core.IDataGridPresentationModel
+         */
+               public function set rowHeight(value:Number):void
+               {
+                       (presentationModel as 
IDataGridPresentationModel).rowHeight = value;
+               }
+               
+               override public function addedToParent():void
+               {
+                       loadBeadFromValuesManager(IChangePropagator, 
"iChangePropagator", this);
+                       super.addedToParent();
+                       dispatchEvent(new Event("initComplete"));
+               }
+       }
+}
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
new file mode 100644
index 0000000..827b040
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
@@ -0,0 +1,99 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Jewel DataGrid
+
+// DataGrid variables
+
+.jewel.datagrid
+
+j|DataGrid
+    IChangePropagator: 
ClassReference("org.apache.royale.html.beads.DataGridColumnChangePropagator")
+    IDataGridPresentationModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridPresentationModel")
+    IBeadView: ClassReference("org.apache.royale.html.beads.DataGridView")
+    IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridModel")
+    IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout")
+    columnClass: 
ClassReference("org.apache.royale.html.supportClasses.DataGridColumnList")
+    columnContainerClass: 
ClassReference("org.apache.royale.html.DataGridButtonBar")
+    columnLayoutClass: 
ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout")
+    listAreaClass: 
ClassReference("org.apache.royale.html.beads.DataGridListArea")
+
+// DataGridButtonBar
+// {
+// IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.ButtonBarModel")
+// IBeadView:  ClassReference("org.apache.royale.html.beads.ButtonBarView")    
                
+// IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController")
+// IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout")
+// IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.TextItemRendererFactoryForArrayData")
+// IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+// IItemRenderer: 
ClassReference("org.apache.royale.html.supportClasses.TextButtonItemRenderer")
+
+// border-style: none
+// height: 40px
+// min-height: 40px
+// flex-grow: 0
+// }
+
+// DataGridColumnList {
+// IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridModel")
+// IBeadView:  ClassReference("org.apache.royale.html.beads.ListView")         
        
+// IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController")
+// IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout")
+// IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData")
+// IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+// IItemRenderer: 
ClassReference("org.apache.royale.html.supportClasses.StringItemRenderer")
+// IViewport: ClassReference("org.apache.royale.html.supportClasses.Viewport")
+// IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
+// border-style: none
+// background-color: #FFFFFF
+// }
+
+// DataGridListArea {
+// background-color: #FFFFFF
+// IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.HorizontalLayout")
+// IViewport: 
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport")
+// IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
+// flex-grow: 1
+// }
+
+// DynamicDataGrid {
+// IChangePropagator: 
ClassReference("org.apache.royale.html.beads.DataGridColumnChangePropagator")
+// IDataGridPresentationModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridPresentationModel")
+// IBeadView: ClassReference("org.apache.royale.html.beads.DataGridView")
+// IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridCollectionViewModel")
+// IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout")
+// ColumnClass: 
ClassReference("org.apache.royale.html.supportClasses.DynamicDataGridColumnList")
+
+// background-color: #FFFFFF
+// border: 1px solid #222222
+// }
+
+// DynamicDataGridColumnList {
+// IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridCollectionViewModel")
+// IBeadView:  ClassReference("org.apache.royale.html.beads.ListView")         
        
+// IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController")
+// IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout")
+// IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForCollectionView")
+// IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+// IItemRenderer: 
ClassReference("org.apache.royale.html.supportClasses.StringItemRenderer")
+// IViewport: ClassReference("org.apache.royale.html.supportClasses.Viewport")
+// IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
+// border-style: none
+// background-color: #FFFFFF
+// }
\ No newline at end of file
diff --git a/frameworks/projects/Jewel/src/main/sass/defaults.sass 
b/frameworks/projects/Jewel/src/main/sass/defaults.sass
index d17b721..f848b27 100644
--- a/frameworks/projects/Jewel/src/main/sass/defaults.sass
+++ b/frameworks/projects/Jewel/src/main/sass/defaults.sass
@@ -30,6 +30,7 @@
 @import "components/checkbox"
 @import "components/controlbar"
 @import "components/combobox"
+@import "components/datagrid"
 @import "components/datechooser"
 @import "components/datefield"
 @import "components/divider"

Reply via email to