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/28 08:00:03 UTC

[royale-asjs] branch adg_grouped updated (19391b2 -> f067828)

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

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


    from 19391b2  grouped columns appear in the right places.  Next is to improve the visuals
     new aaa0363  set svg to absolute.  The parent should be absolute already
     new c9e47f3  special case some html
     new 8e958c3  fix measuring text
     new f067828  grouped headers look better

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../MXRoyale/src/main/resources/defaults.css       |  7 ++++
 .../beads/AdvancedDataGridHeaderLayout.as          |  5 ++-
 .../AdvancedDataGridHeaderRenderer.as              | 38 ++++++++++++++++++----
 .../src/main/royale/mx/core/UITextField.as         | 19 +++++++++--
 .../src/main/royale/mx/core/UITextFormat.as        | 14 ++++++--
 .../src/main/royale/mx/display/Graphics.as         |  1 +
 6 files changed, 70 insertions(+), 14 deletions(-)


[royale-asjs] 01/04: set svg to absolute. The parent should be absolute already

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit aaa03633fca805f232276d8c6ea751ce7139b2c7
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Dec 27 23:58:28 2019 -0800

    set svg to absolute.  The parent should be absolute already
---
 frameworks/projects/MXRoyale/src/main/royale/mx/display/Graphics.as | 1 +
 1 file changed, 1 insertion(+)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/display/Graphics.as b/frameworks/projects/MXRoyale/src/main/royale/mx/display/Graphics.as
index 7caee4f..fe41889 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/display/Graphics.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/display/Graphics.as
@@ -64,6 +64,7 @@ package mx.display
                 svg = document.createElementNS("http://www.w3.org/2000/svg", "svg") as HTMLElement;
                 svg.setAttribute("width", displayObject.width.toString() + "px");
                 svg.setAttribute("height", displayObject.height.toString() + "px");
+                svg.style.position = "absolute";
                 element.appendChild(svg);
             }
         }


[royale-asjs] 02/04: special case some html

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

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

    special case some html
---
 .../MXRoyale/src/main/royale/mx/core/UITextFormat.as       | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextFormat.as b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextFormat.as
index 2dc5b17..1ce581a 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextFormat.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextFormat.as
@@ -570,10 +570,18 @@ public class UITextFormat extends TextFormat
         if (sm.measuringElement == null)
         {
             sm.measuringElement = document.createElement("span") as HTMLSpanElement;
-            sm.measuringElement.style.position = "float"; // to try to keep it from affecting position of other elements
-            sm.measuringElement.style.display = "none"; // to try to keep it hidden
+            //everything else is absolute position so should be above this element
+            //sm.measuringElement.style.position = "float"; // to try to keep it from affecting position of other elements
+            // offsetWidth/Height not computed for display: none
+            //sm.measuringElement.style.display = "none"; // to try to keep it hidden
+            sm.measuringElement.style.opacity = 0;
+            sm.measuringElement.style["pointer-events"] = "none";
+            sm.element.appendChild(sm.measuringElement);
         }
-        sm.measuringElement.text = s;
+        if (s.indexOf("&nbsp;") >= 0)
+            sm.measuringElement.innerHTML = s;
+        else
+            sm.measuringElement.textContent = s;
         var tlm:TextLineMetrics = new TextLineMetrics();
         tlm.width = sm.measuringElement.offsetWidth;
         tlm.height = sm.measuringElement.offsetHeight;


[royale-asjs] 03/04: fix measuring text

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8e958c36d614d3c92a22e06c4a44a95634a94067
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Dec 27 23:59:15 2019 -0800

    fix measuring text
---
 .../MXRoyale/src/main/royale/mx/core/UITextField.as   | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextField.as b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextField.as
index 90068fc..3e74a0d 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextField.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextField.as
@@ -38,6 +38,7 @@ import flash.text.TextLineMetrics;
  import mx.styles.IStyleManager2;
  import mx.utils.StringUtil;
  
+ import org.apache.royale.core.TextLineMetrics;
  import org.apache.royale.events.Event;
  
  COMPILE::JS
@@ -459,6 +460,8 @@ public class UITextField  extends UIComponent implements IUITextField
             dispatchEvent(new Event("textFieldWidthChange")); */
     }
     
+     private var usingHTML:Boolean;
+     
      //----------------------------------
      //  htmlText
      //----------------------------------
@@ -666,6 +669,9 @@ public class UITextField  extends UIComponent implements IUITextField
       */
      public function set htmlText(value:String):void
      {
+         lineMetrics = null;
+         usingHTML = true;
+         
          COMPILE::SWF
              {
                  ITextModel(model).html = value;
@@ -747,6 +753,9 @@ public class UITextField  extends UIComponent implements IUITextField
       */
      public function set text(value:String):void
      {
+         lineMetrics = null;
+         usingHTML = false;
+         
          COMPILE::SWF
              {
                  ITextModel(model).text = value;
@@ -2982,14 +2991,20 @@ public class UITextField  extends UIComponent implements IUITextField
          return true;
      }
      
+     private var lineMetrics:TextLineMetrics;
+     
      public function get textWidth():Number
      {
-         return width;
+         if (!lineMetrics)
+             lineMetrics = getUITextFormat().measureText(usingHTML ? htmlText : text);
+         return lineMetrics.width;
      }
      
      public function get textHeight():Number
      {
-         return height;
+         if (!lineMetrics)
+             lineMetrics = getUITextFormat().measureText(usingHTML ? htmlText : text);
+         return lineMetrics.height;
      }
      
      public function get wordWrap():Boolean


[royale-asjs] 04/04: grouped headers look better

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f067828d760f8a31153051308b362e0d64402ba8
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 f07e80a..4e5cbbc 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -79,6 +79,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);