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:07 UTC
[royale-asjs] 04/04: grouped headers look better
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(" ", " ");
+ }
+ 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(" ") >= 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);