You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2019/12/12 23:47:02 UTC

[royale-asjs] 01/42: 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

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

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

commit 043a58bc14ab335ffc3a2c3a3c3be2af6fb9bcfd
Author: Carlos Rovira <ca...@apache.org>
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 766be88..75b0cf4 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"