You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2019/12/30 00:35:54 UTC

[royale-asjs] 11/13: grouped headers look better

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

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

commit 7100332a161df4adf30aa3618af1bcb4e8b4b6b5
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Dec 27 23:59:49 2019 -0800

    grouped headers look better
---
 .../MXRoyale/src/main/resources/defaults.css       |  7 ++++
 .../beads/AdvancedDataGridHeaderLayout.as          |  5 ++-
 .../AdvancedDataGridHeaderRenderer.as              | 38 ++++++++++++++++++----
 3 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index cb86796..3c00199 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -80,6 +80,13 @@ adg|AdvancedDataGridButtonBar {
 	position: absolute;
 }
 
+adg|AdvancedDataGridHeaderRenderer {
+	horizontalAlign: center;
+	vertical-align: middle;
+	border: 1px solid #222222;
+	font-weight: bold;
+}
+
 AdvancedDataGrid
 {
 	alternatingItemColors: #F7F7F7, #FFFFFF;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
index 8d3ffc3..2697cc6 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
@@ -142,15 +142,14 @@ public class AdvancedDataGridHeaderLayout extends LayoutBase
             }
                 
             COMPILE::JS {
-                // otherwise let the flexbox layout handle matters on its own.
+                if (!host.isHeightSizedToContent())
+                    ilc.height = contentView.height;
                 if (buttonWidths) {
                     var widthValue:* = buttonWidths[i];
                     if (widthValue != null) ilc.width = Number(widthValue);
                     ilc.x = xx;
                     xx += ilc.width;
                 }                
-                if (!host.isHeightSizedToContent())
-                    ilc.height = contentView.height;
             }
         }
         
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridHeaderRenderer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridHeaderRenderer.as
index 2dac500..cb0b5b4 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridHeaderRenderer.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridHeaderRenderer.as
@@ -189,6 +189,8 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
     public function AdvancedDataGridHeaderRenderer()
     {
         super();
+        
+        typeNames = "AdvancedDataGridHeaderRenderer";
 
         // InteractiveObject variables.
         tabEnabled   = false;
@@ -311,7 +313,7 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
         _data = value;
 
         var col:AdvancedDataGridColumn = (value as AdvancedDataGridColumn);
-        var ld:AdvancedDataGridListData = new AdvancedDataGridListData(col.headerText != null ? col.headerText : col.dataField,
+        var ld:AdvancedDataGridListData = new AdvancedDataGridListData(getColumnLabel(col),
                 col.dataField, 
                 col.colNum, "", col.owner);
         listData = ld;
@@ -321,6 +323,17 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
 
         dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
     } 
+    
+    private function getColumnLabel(col:DataGridColumn):String
+    {
+        var label:String = col.headerText != null ? col.headerText : col.dataField;
+        COMPILE::JS
+        {
+            if (label)
+                label = label.replace(" ", "&nbsp;");
+        }
+        return label;
+    }
 
     //----------------------------------
     //  sortItemRenderer
@@ -431,6 +444,8 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
     
     private var childHeaders:DataGridButtonBar;
 
+    private var usingHTML:Boolean;
+    
     /**
      *  @private
      *  Apply the data and listData.
@@ -486,7 +501,14 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
 
         if (_data != null)
         {
-            label.text      = listData.label ? listData.label : " ";
+            var lbl:String = listData.label ? listData.label : " ";
+            if (lbl.indexOf("&nbsp;") >= 0)
+            {
+                label.htmlText = lbl;
+                usingHTML = true;
+            }
+            else
+                label.text = lbl;
             // label.multiline = grid.variableRowHeight;
             // if( _data is AdvancedDataGridColumn)
             //     label.wordWrap = grid.columnHeaderWordWrap(_data as AdvancedDataGridColumn);
@@ -593,7 +615,7 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
         }
         else
         {
-            var lineMetrics:TextLineMetrics = measureText(label.text);
+            var lineMetrics:TextLineMetrics = measureText(usingHTML ? label.htmlText : label.text);
             labelWidth  = lineMetrics.width + UITextField.TEXT_WIDTH_PADDING;
             labelHeight = lineMetrics.height + UITextField.TEXT_HEIGHT_PADDING;
             w = labelWidth + horizontalGap
@@ -649,7 +671,7 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
             horizontalGap = 0;
 
         // Adjust to given width
-        var lineMetrics:TextLineMetrics = measureText(label.text);
+        var lineMetrics:TextLineMetrics = measureText(usingHTML ? label.htmlText: label.text);
         var labelWidth:Number  = lineMetrics.width + UITextField.TEXT_WIDTH_PADDING;
         var maxLabelWidth:int = unscaledWidth - sortItemRendererWidth
                                 - horizontalGap - paddingLeft - paddingRight;
@@ -701,6 +723,10 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
         }
         labelX = Math.max(labelX, 0);
 
+        var labelAreaHeight:Number = unscaledHeight;
+        if (childHeaders)
+            labelAreaHeight /= 2;
+        
         var labelY:Number;
         var verticalAlign:String = getStyle("verticalAlign");
         if (verticalAlign == "top")
@@ -709,11 +735,11 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
         }
         else if (verticalAlign == "bottom")
         {
-            labelY = unscaledHeight - labelHeight - paddingBottom + 2; // 2 for gutter
+            labelY = labelAreaHeight - labelHeight - paddingBottom + 2; // 2 for gutter
         }
         else // if (verticalAlign == "middle")
         {
-            labelY = (unscaledHeight - labelHeight - paddingBottom - paddingTop)/2
+            labelY = (labelAreaHeight - labelHeight - paddingBottom - paddingTop)/2
                      + paddingTop;
         }
         labelY = Math.max(labelY, 0);