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:20 UTC

[royale-asjs] 19/42: jewel-datagrid: change hierachy from GroupBase to Group, and remove "initComplete" that makes creation duplicates all. Also add "emphasized" property to colorize header and Jewel IDataGrid to match that property

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 0b4ed230a220ac74c61aa9cdab73433dd0f9239e
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Mon Dec 2 14:29:42 2019 +0100

    jewel-datagrid: change hierachy from GroupBase to Group, and remove "initComplete" that makes creation duplicates all. Also add "emphasized" property to colorize header and Jewel IDataGrid to match that property
---
 .../src/main/royale/DataGridPlayGround.mxml        |  5 +--
 .../royale/org/apache/royale/jewel/DataGrid.as     | 37 ++++++++++++++++++---
 .../beads/models/DataGridPresentationModel.as      | 10 +++---
 .../royale/jewel/beads/views/DataGridView.as       | 16 +++++----
 .../apache/royale/jewel/beads/views/ListView.as    |  2 +-
 .../jewel/supportClasses/datagrid/IDataGrid.as     | 38 ++++++++++++++++++++++
 6 files changed, 89 insertions(+), 19 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml b/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
index bffd6f1..9d11a51 100644
--- a/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
@@ -56,7 +56,8 @@ limitations under the License.
 
 				<j:DataGrid localId="dataGrid" width="100%" height="100%" 
 					change="dataGridChange(dataGrid, output1)" 
-					rowHeight="40" className="PercentageColumnWidths">
+					rowHeight="40" className="PercentageColumnWidths"
+					emphasis="primary">
 					<j:beads>
 						<js:ConstantBinding
 							sourceID="productModel"
@@ -64,7 +65,7 @@ limitations under the License.
 							destinationPropertyName="dataProvider" />
 					</j:beads>
 					<j:columns>
-						<j:DataGridColumn label="Image" dataField="image" columnWidth="15" itemRenderer="itemRenderers.ProductItemRenderer"/>
+						<j:DataGridColumn label="Images and Pictures" dataField="image" columnWidth="15" itemRenderer="itemRenderers.ProductItemRenderer"/>
 						<j:DataGridColumn label="Title" dataField="title" columnWidth="60" />
 						<j:DataGridColumn label="Sales" dataField="sales" columnWidth="25" />
 					</j:columns>
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
index 37f8f75..6df6f83 100644
--- 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
@@ -18,15 +18,14 @@
 ////////////////////////////////////////////////////////////////////////////////
 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;
+	import org.apache.royale.jewel.supportClasses.datagrid.IDataGrid;
 	
 	[Event(name="change", type="org.apache.royale.events.Event")]
 	
@@ -44,7 +43,7 @@ package org.apache.royale.jewel
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.9.7
 	 */
-	public class DataGrid extends GroupBase implements IDataGrid
+	public class DataGrid extends Group implements IDataGrid
 	{
 		/**
 		 *  constructor.
@@ -186,7 +185,37 @@ package org.apache.royale.jewel
 		{
 			loadBeadFromValuesManager(IChangePropagator, "iChangePropagator", this);
 			super.addedToParent();
-			dispatchEvent(new Event("initComplete"));
 		}
+
+		private var _emphasis:String;
+        /**
+		 *  Applies emphasis color display. Possible constant values are: PRIMARY, SECONDARY, EMPHASIZED.
+         *  Colors are defined in royale jewel theme CSS.
+         * 
+         *  Left without value to get the default look (light or dark).
+         *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.7
+		 */
+        public function get emphasis():String
+        {
+            return _emphasis;
+        }
+        [Inspectable(category="General", enumeration="primary,secondary,emphasized")]
+        public function set emphasis(value:String):void
+        {
+            if (_emphasis != value)
+            {
+                if(_emphasis)
+                {
+					toggleClass(_emphasis, false);
+                }
+                _emphasis = value;
+
+                toggleClass(_emphasis, value);
+            }
+        }
 	}
 }
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as
index b1df6fd..52d1a76 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as
@@ -24,12 +24,12 @@ package org.apache.royale.jewel.beads.models
 	
 	/**
 	 *  The DataGridPresentationModel class contains the data to label the columns
-	 *  of the org.apache.royale.html.DataGrid along with the height of the rows. 
+	 *  of the org.apache.royale.jewel.DataGrid along with the height of the rows. 
 	 *  
 	 *  @langversion 3.0
 	 *  @playerversion Flash 10.2
 	 *  @playerversion AIR 2.6
-	 *  @productversion Royale 0.0
+	 *  @productversion Royale 0.9.7
 	 */
 	public class DataGridPresentationModel extends ListPresentationModel implements IDataGridPresentationModel
 	{
@@ -39,7 +39,7 @@ package org.apache.royale.jewel.beads.models
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
+		 *  @productversion Royale 0.9.7
 		 */
 		public function DataGridPresentationModel()
 		{
@@ -56,7 +56,7 @@ package org.apache.royale.jewel.beads.models
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
+		 *  @productversion Royale 0.9.7
 		 */
 		public function get columnLabels():Array
 		{
@@ -78,7 +78,7 @@ package org.apache.royale.jewel.beads.models
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
+		 *  @productversion Royale 0.9.7
 		 */
 		override public function set strand(value:IStrand):void
 		{
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
index 1916204..45b29b7 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
@@ -18,11 +18,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.views
 {
+	import org.apache.royale.collections.ArrayList;
 	import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IBeadModel;
 	import org.apache.royale.core.IBeadView;
 	import org.apache.royale.core.IChild;
-	import org.apache.royale.core.IDataGrid;
 	import org.apache.royale.core.IDataGridModel;
 	import org.apache.royale.core.IDataGridPresentationModel;
 	import org.apache.royale.core.ILayoutChild;
@@ -38,6 +38,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.html.supportClasses.IDataGridColumnList;
 	import org.apache.royale.jewel.supportClasses.Viewport;
 	import org.apache.royale.jewel.supportClasses.datagrid.DataGridButtonBar;
+	import org.apache.royale.jewel.supportClasses.datagrid.IDataGrid;
 	import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
 
     /**
@@ -96,10 +97,10 @@ package org.apache.royale.jewel.beads.views
             return _header;
         }
 
-        public function refreshContent():void
-        {
-            handleInitComplete(null);
-        }
+        // public function refreshContent():void
+        // {
+        //     handleInitComplete(null);
+        // }
 
         /**
          * @private
@@ -126,7 +127,8 @@ package org.apache.royale.jewel.beads.views
             _header = new columnContainerClass() as DataGridButtonBar;
             // header's height is set in CSS
             _header.percentWidth = 100;
-            _header.dataProvider = sharedModel.columns;
+            _header.dataProvider = new ArrayList(sharedModel.columns);
+            _header.emphasis = host.emphasis;
             _header.labelField = "label";
             sharedModel.headerModel = _header.model as IBeadModel;
 
@@ -234,7 +236,7 @@ package org.apache.royale.jewel.beads.views
             
             // get the name of the class to use for the columns
             var columnClass:Class = ValuesManager.valuesImpl.getValue(host, "columnClass") as Class;
-            assert(columnClass != null,"ColumnClass for DataGrid must be set!")
+            assert(columnClass != null, "ColumnClass for DataGrid must be set!")
 
             var sharedModel:IDataGridModel = host.model as IDataGridModel;
             var presentationModel:IDataGridPresentationModel = host.presentationModel as IDataGridPresentationModel;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
index c5a0b6d..dd751c7 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
@@ -101,7 +101,7 @@ package org.apache.royale.jewel.beads.views
 
 		/**
 		 * @private
-		 * Ensure the list selects the selectedItem if someone is set by the user at creation time
+		 * Ensure the list selects the selectedItem if some is set by the user at creation time
 		 */
 		override protected function itemsCreatedHandler(event:Event):void
 		{
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGrid.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGrid.as
new file mode 100644
index 0000000..ed04f42
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGrid.as
@@ -0,0 +1,38 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses.datagrid
+{
+        import org.apache.royale.core.IDataGrid;
+        
+        /**
+         *  The Jewel IDataGrid interface is implemented by any component that supports being
+         *  a "DataGrid" which means its content is generated by a factory and whose
+         *  children are item renderers (IItemRenderer).
+         * 
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+        public interface IDataGrid extends org.apache.royale.core.IDataGrid
+        {
+                function get emphasis():String;
+                function set emphasis(value:String):void;
+        }
+}