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 2020/04/13 08:31:31 UTC

[royale-asjs] branch develop updated: jewel-tablecolumn: accept % columnWidths

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


The following commit(s) were added to refs/heads/develop by this push:
     new 35b5a9e  jewel-tablecolumn: accept % columnWidths
35b5a9e is described below

commit 35b5a9e660c6abcf5ee52e9e081dbdfb7bf05482
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Mon Apr 13 10:31:26 2020 +0200

    jewel-tablecolumn: accept % columnWidths
---
 ...verridableSelectableItemRendererClassFactory.as |  16 +--
 .../jewel/supportClasses/table/TableColumn.as      | 123 ++++++++++++++++++++-
 2 files changed, 124 insertions(+), 15 deletions(-)

diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/OverridableSelectableItemRendererClassFactory.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/OverridableSelectableItemRendererClassFactory.as
index 841f367..cb1265b 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/OverridableSelectableItemRendererClassFactory.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/OverridableSelectableItemRendererClassFactory.as
@@ -18,13 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.core
 {
-    
-    import org.apache.royale.core.ClassFactory;
-    import org.apache.royale.core.IFactory;
-    import org.apache.royale.core.IItemRendererProvider;
     import org.apache.royale.core.ISelectableItemRenderer;
-    
-    import org.apache.royale.utils.MXMLDataInterpreter;
     import org.apache.royale.utils.getSelectionRenderBead;
 
 	[DefaultProperty("mxmlContent")]
@@ -38,7 +32,7 @@ package org.apache.royale.core
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
-     *  @productversion Royale 0.0
+     *  @productversion Royale 0.9.7
      */
 	public class OverridableSelectableItemRendererClassFactory extends ItemRendererClassFactory
 	{
@@ -48,7 +42,7 @@ package org.apache.royale.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
+         *  @productversion Royale 0.9.7
          */
 		public function OverridableSelectableItemRendererClassFactory()
 		{
@@ -61,7 +55,7 @@ package org.apache.royale.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
+         *  @productversion Royale 0.9.7
          *  @royaleignorecoercion Class
          */
         override public function set strand(value:IStrand):void
@@ -78,7 +72,7 @@ package org.apache.royale.core
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
+         *  @productversion Royale 0.9.7
          */
         override public function createItemRenderer():IItemRenderer
         {
@@ -89,7 +83,7 @@ package org.apache.royale.core
                 selectionBead = new selectableBeadClass();
                 COMPILE::JS
                 {
-                    ir["_selectionBead_"] = selectionBead;
+                ir["_selectionBead_"] = selectionBead;
                 }
 	            ir.addBead(selectionBead);
             }
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TableColumn.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TableColumn.as
index 51c5d44..5ee04fb 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TableColumn.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TableColumn.as
@@ -62,9 +62,78 @@ package org.apache.royale.jewel.supportClasses.table
 		{
 			_itemRenderer = value;
 		}
+
+		protected var _explicitColumnWidth:Number;
+        /**
+         *  The explicitly set columnWidth
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+		public function get explicitColumnWidth():Number
+		{
+			return _explicitColumnWidth;
+		}
+        /**
+         *  @private
+         */
+        public function set explicitColumnWidth(value:Number):void
+		{
+			if (_explicitColumnWidth == value)
+				return;
+			
+			// width can be pixel or percent not both
+			if (!isNaN(value))
+				_percentColumnWidth = NaN;
+			
+			_explicitColumnWidth = value;
+			// sendEvent(this,"explicitColumnWidthChanged");
+		}
+
+		protected var _percentColumnWidth:Number = NaN;
+		/**
+         *  The requested percentage width this component
+         *  should have in the parent container.  Note that
+         *  the actual percentage may be different if the 
+         *  total is more than 100% or if there are other
+         *  components with explicitly set widths.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+		public function get percentColumnWidth():Number
+		{
+			return _percentColumnWidth;
+		}
+		/**
+         *  @private
+         */
+		public function set percentColumnWidth(value:Number):void
+		{
+			COMPILE::SWF {
+				if (_percentColumnWidth == value)
+					return;
+				
+				if (!isNaN(value))
+					_explicitColumnWidth = NaN;
+				
+				_percentColumnWidth = value;
+			}
+			COMPILE::JS {
+				this._percentColumnWidth = value;
+				
+				// this.positioner.style.width = value.toString() + '%';
+				if (!isNaN(value))
+					this._explicitColumnWidth = NaN;
+			}
+			// sendEvent(this,"percentColumnWidthChanged");
+		}
 		
-		private var _columnWidth:Number = Number.NaN;
-		
+		protected var _columnWidth:Number = NaN;
 		/**
 		 *  The width of the column (default is 100 pixels).
 		 *
@@ -72,15 +141,61 @@ package org.apache.royale.jewel.supportClasses.table
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.4
+		 *  @royaleignorecoercion String
 		 */
+		[Bindable("columnWidthChanged")]
+		[PercentProxy("percentColumnWidth")]
 		public function get columnWidth():Number
 		{
-			return _columnWidth;
+			if (!isNaN(_columnWidth))
+                return _columnWidth;
+            // if (!isNaN(_explicitColumnWidth))
+            return _explicitColumnWidth;
+            // var pixels:Number;
+            // var strpixels:String = element.style.width as String;
+            // if(strpixels == null)
+            //     pixels = NaN;
+            // else
+            //     pixels = CSSUtils.toNumber(strpixels,NaN);
+            // if (isNaN(pixels)) {
+            //     pixels = positioner.offsetWidth;
+            //     if (pixels == 0 && positioner.scrollWidth != 0) {
+            //         // invisible child elements cause offsetWidth to be 0.
+            //         pixels = positioner.scrollWidth;
+            //     }
+            // }
+            // return pixels;
 		}
 		public function set columnWidth(value:Number):void
 		{
-			_columnWidth = value;
+			if (explicitColumnWidth !== value)
+            {
+                explicitColumnWidth = value;
+            }
+            
+            setColumnWidth(value);
 		}
+
+		/**
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+        public function setColumnWidth(value:Number, noEvent:Boolean = false):void
+        {
+            if (_columnWidth !== value)
+            {
+                _columnWidth = value;
+				
+                // COMPILE::JS
+                // {
+                //     this.positioner.style.width = value.toString() + 'px';        
+                // }
+                // if (!noEvent)
+                //     sendEvent(this,"columnWidthChanged");
+            }
+        }
 		
 		private var _label:String;