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

[royale-asjs] branch develop updated (7af0616 -> 73c77af)

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

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


    from 7af0616  jewel-group: Make StyledUIBase the base class for Jewel Group and DataGroup. This ends the refsactor for Jewel to have StyledUIBase as the base of all components
     new 9f95a39  Try using AdvancedDataGridHeaderRenderer in AdvancedDataGrid
     new 3ad6ffc  Take care of case where you want to drop a dragged item outside app
     new 6b00c37  This flag needs to be raised somewhere other than init
     new 6902770  fix text in UITextField
     new 0ba8f78  column headers now display text, but we still need to display the group header
     new 75be13a  some abstractions for the subclasses
     new 95e87f5  grouped columns appear in the right places.  Next is to improve the visuals
     new 5078e6b  set svg to absolute.  The parent should be absolute already
     new 0898e23  special case some html
     new 3c88438  fix measuring text
     new 7100332  grouped headers look better
     new 8f255dd  get mxtests to pass
     new 73c77af  fix up after merge

The 13 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:
 .../org/apache/royale/html/beads/DataGridView.as   |   2 +-
 .../royale/html/beads/layouts/DataGridLayout.as    |  33 +-
 .../html/beads/OutOfApplicationDropTargetBead.as   |   5 -
 .../html/beads/SingleSelectionDragSourceBead.as    |   1 +
 .../MXRoyale/src/main/resources/defaults.css       |  21 +-
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |   1 +
 .../beads/AdvancedDataGridHeaderLayout.as          | 161 +++++++++
 .../main/royale/mx/controls/AdvancedDataGrid.as    |  21 +-
 ...dColumnList.as => AdvancedDataGridButtonBar.as} | 108 +++---
 .../AdvancedDataGridColumn.as                      |   9 -
 .../AdvancedDataGridHeaderRenderer.as              | 361 +++++++++++++++------
 .../mx/controls/beads/AdvancedDataGridView.as      |  31 +-
 .../main/royale/mx/controls/beads/DataGridView.as  |  31 +-
 .../beads/layouts/AdvancedDataGridLayout.as        |  37 +++
 .../mx/controls/beads/layouts/DataGridLayout.as    |  28 +-
 .../mx/controls/dataGridClasses/DataGridColumn.as  |  11 +
 .../src/main/royale/mx/core/UITextField.as         |  33 +-
 .../src/main/royale/mx/core/UITextFormat.as        |  14 +-
 .../src/main/royale/mx/display/Graphics.as         |   1 +
 19 files changed, 676 insertions(+), 233 deletions(-)
 create mode 100644 frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
 copy frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/{AdvancedDataGridColumnList.as => AdvancedDataGridButtonBar.as} (62%)


[royale-asjs] 01/13: Try using AdvancedDataGridHeaderRenderer in AdvancedDataGrid

Posted by ah...@apache.org.
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 9f95a39c6a14e3b5319445b255b1cd745a5dec27
Author: DESKTOP-RH4S838\Yishay <yi...@hotmail.com>
AuthorDate: Thu Dec 5 16:29:42 2019 +0200

    Try using AdvancedDataGridHeaderRenderer in AdvancedDataGrid
    
    Reference #593
---
 .../MXRoyale/src/main/resources/defaults.css       |   6 +-
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |   1 +
 .../AdvancedDataGridButtonBar.as                   |  45 ++++
 .../AdvancedDataGridHeaderRenderer.as              | 232 ++++++++++++---------
 4 files changed, 186 insertions(+), 98 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 05c1de5..cc1e8d4 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -75,6 +75,10 @@ Basic|DataGridButtonBar {
 	IItemRenderer: ClassReference("mx.controls.buttonBarClasses.TextButtonDataGridColumnItemRenderer");
 }
 
+adg|AdvancedDataGridButtonBar {
+	IItemRenderer: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridHeaderRenderer");
+}
+
 AdvancedDataGrid
 {
 	alternatingItemColors: #F7F7F7, #FFFFFF;
@@ -85,7 +89,7 @@ AdvancedDataGrid
 	IBeadLayout: ClassReference("mx.controls.beads.layouts.AdvancedDataGridLayout");
 	IDataProviderNotifier: ClassReference("mx.controls.beads.DataProviderChangeNotifier");
 	columnClass: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridColumnList");
-	columnContainerClass: ClassReference("org.apache.royale.html.DataGridButtonBar");
+	columnContainerClass: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridButtonBar");
 	columnLayoutClass: ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout");
 	listAreaClass: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridListArea");
 	
diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 25cca50..7c38a53 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -167,6 +167,7 @@ internal class MXRoyaleClasses
 	import mx.events.ProgressEvent; ProgressEvent;
 	import mx.events.ColorPickerEvent; ColorPickerEvent;
     import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnList; AdvancedDataGridColumnList;
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridButtonBar; AdvancedDataGridButtonBar;
     import mx.controls.advancedDataGridClasses.AdvancedDataGridListArea; AdvancedDataGridListArea;
     import mx.controls.advancedDataGridClasses.AdvancedDataGridSingleSelectionMouseController; AdvancedDataGridSingleSelectionMouseController;
     import mx.controls.dataGridClasses.DataGridColumnList; DataGridColumnList;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridButtonBar.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridButtonBar.as
new file mode 100644
index 0000000..1fbfb95
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridButtonBar.as
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.controls.advancedDataGridClasses
+{
+
+    import org.apache.royale.html.DataGridButtonBar;
+
+    /**
+     *  The AdvancedDataGridButtonBar class extends DataGridButtonBar to allow some specialized css
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Royale 0.9.7
+     *  @royalesuppresspublicvarwarning
+     */
+    public class AdvancedDataGridButtonBar extends DataGridButtonBar
+    {
+        public function AdvancedDataGridButtonBar()
+        {
+            super();
+            typeNames += " AdvancedDataGridButtonBar";
+
+        }
+
+    }
+
+}
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 870be51..7e5bf48 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
@@ -27,22 +27,28 @@ import flash.events.MouseEvent;
 import flash.geom.Point;
 import flash.geom.Rectangle;
 import flash.text.TextLineMetrics;
-
+*/
 import mx.controls.AdvancedDataGrid;
 import mx.controls.listClasses.BaseListData;
 import mx.controls.listClasses.IDropInListItemRenderer;
-import mx.controls.listClasses.IListItemRenderer; */
+import mx.controls.listClasses.IListItemRenderer;
 import mx.core.ClassFactory;
-//import mx.core.IDataRenderer;
+import mx.core.IDataRenderer;
 import mx.core.IFactory;
 import mx.core.IInvalidating;
 import mx.core.IToolTip;
-//import mx.core.IUITextField;
+import mx.core.IUITextField;
 import mx.core.UIComponent;
-//import mx.core.UITextField;
+import mx.core.UITextField;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
-//import mx.events.ToolTipEvent;
+import mx.events.ToolTipEvent;
+import mx.core.IUIComponent;
+import org.apache.royale.geom.Point;
+import org.apache.royale.core.TextLineMetrics;
+import org.apache.royale.geom.Rectangle;
+import org.apache.royale.events.Event;
+import org.apache.royale.events.MouseEvent;
 
 use namespace mx_internal;
 
@@ -65,7 +71,7 @@ use namespace mx_internal;
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-//[Event(name="dataChange", type="mx.events.FlexEvent")]
+[Event(name="dataChange", type="mx.events.FlexEvent")]
 
 //--------------------------------------
 //  Styles
@@ -154,13 +160,10 @@ use namespace mx_internal;
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-public class AdvancedDataGridHeaderRenderer
-       extends UIComponent
+public class AdvancedDataGridHeaderRenderer extends UIComponent implements IDataRenderer,
+ IDropInListItemRenderer, IListItemRenderer
       
 {
- /* implements IDataRenderer,
-                  IDropInListItemRenderer,
-                  IListItemRenderer */
    // include "../../core/Version.as";
     
     //--------------------------------------------------------------------------
@@ -182,9 +185,9 @@ public class AdvancedDataGridHeaderRenderer
         super();
 
         // InteractiveObject variables.
-      /*   tabEnabled   = false;
+        tabEnabled   = false;
 
-        addEventListener(ToolTipEvent.TOOL_TIP_SHOW, toolTipShowHandler); */
+        addEventListener(ToolTipEvent.TOOL_TIP_SHOW, toolTipShowHandler); 
     }
     
     //--------------------------------------------------------------------------
@@ -196,28 +199,28 @@ public class AdvancedDataGridHeaderRenderer
     /**
      *  @private
      */
-  //  private var grid:AdvancedDataGrid;
+    private var grid:AdvancedDataGrid;
 
     /**
      *  @private
      *  The value of the unscaledWidth parameter during the most recent
      *  call to updateDisplayList
      */
-  //  private var oldUnscaledWidth:Number = -1;
+    private var oldUnscaledWidth:Number = -1;
 
     /**
      *  @private
      *  header separator skin
      */
- //   private var partsSeparatorSkinClass:Class;
-  //  private var partsSeparatorSkin:DisplayObject;
+    private var partsSeparatorSkinClass:Class;
+    private var partsSeparatorSkin:IUIComponent;
     
     /**
      *  @private
      *  Storage for the sortItemRenderer property
      */
-  //  private var sortItemRendererInstance:UIComponent;
-  //  private var sortItemRendererChanged:Boolean = false;
+    private var sortItemRendererInstance:UIComponent;
+    private var sortItemRendererChanged:Boolean = false;
     
     /**
      *  The internal UITextField that displays the text in this renderer.
@@ -227,7 +230,7 @@ public class AdvancedDataGridHeaderRenderer
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-  //  protected var label:IUITextField;
+    protected var label:IUITextField;
 
     /**
      *  This background is used as a mouseShield so that the mouse clicks do not pass
@@ -238,7 +241,7 @@ public class AdvancedDataGridHeaderRenderer
      *
      *  @private
      */
-  //  protected var background:Sprite;
+    protected var background:UIComponent;
 
     //--------------------------------------------------------------------------
     //
@@ -253,10 +256,11 @@ public class AdvancedDataGridHeaderRenderer
     /**
      *  @private
      */
-  /*   override public function get baselinePosition():Number
+    override public function get baselinePosition():Number
     {
-        return label.baselinePosition;
-    } */
+        // return label.baselinePosition;
+        return 0;
+    } 
 
     //--------------------------------------------------------------------------
     //
@@ -272,10 +276,10 @@ public class AdvancedDataGridHeaderRenderer
      *  @private
      *  Storage for the data property.
      */
-   /*  private var _data:Object;
+    private var _data:Object;
 
     [Bindable("dataChange")]
- */
+ 
     /**
      *  The implementation of the <code>data</code> property
      *  as defined by the IDataRenderer interface.
@@ -289,30 +293,31 @@ public class AdvancedDataGridHeaderRenderer
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-  /*   public function get data():Object
+    public function get data():Object
     {
         return _data;
     }
- */
+ 
     /**
      *  @private
      */
-   /*  public function set data(value:Object):void
+    public function set data(value:Object):void
     {
         _data = value;
 
         invalidateProperties();
+        commitProperties();
 
         dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
-    } */
+    } 
 
     //----------------------------------
     //  sortItemRenderer
     //----------------------------------
 
-  /*   private var _sortItemRenderer:IFactory;
+    private var _sortItemRenderer:IFactory;
 
-    [Inspectable(category="Data")] */
+    [Inspectable(category="Data")] 
     /**
      *  Specifies a custom sort item renderer.
      *  By default, the AdvancedDataGridHeaderRenderer class uses 
@@ -329,24 +334,24 @@ public class AdvancedDataGridHeaderRenderer
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-   /*  public function get sortItemRenderer():IFactory
+    public function get sortItemRenderer():IFactory
     {
             return _sortItemRenderer;
-    } */
+    } 
 
     /**
      *  @private
      */
-    /* public function set sortItemRenderer(value:IFactory):void
+    public function set sortItemRenderer(value:IFactory):void
     {
             _sortItemRenderer = value;
 
             sortItemRendererChanged = true;
             invalidateSize();
             invalidateDisplayList();
-
+	    updateDisplayList(getExplicitOrMeasuredWidth(), getExplicitOrMeasuredHeight());
             dispatchEvent(new Event("sortItemRendererChanged"));
-    } */
+    } 
 
     //----------------------------------
     //  listData
@@ -356,9 +361,9 @@ public class AdvancedDataGridHeaderRenderer
      *  @private
      *  Storage for the listData property.
      */
-    /* private var _listData:AdvancedDataGridListData;
+    private var _listData:AdvancedDataGridListData;
 
-    [Bindable("dataChange")] */
+    [Bindable("dataChange")] 
 
     /**
      *  The implementation of the <code>listData</code> property
@@ -371,21 +376,21 @@ public class AdvancedDataGridHeaderRenderer
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    /* public function get listData():BaseListData
+    public function get listData():BaseListData
     {
         return _listData;
-    } */
+    } 
 
     /**
      *  @private
      */
-    /* public function set listData(value:BaseListData):void
+    public function set listData(value:BaseListData):void
     {
         _listData = AdvancedDataGridListData(value);
         grid      = AdvancedDataGrid(_listData.owner);
 
         invalidateProperties();
-    } */
+    } 
 
     //--------------------------------------------------------------------------
     //
@@ -396,14 +401,14 @@ public class AdvancedDataGridHeaderRenderer
     /**
      *  @private
      */
-    /* override protected function createChildren():void
+    override protected function createChildren():void
     {
         super.createChildren();
 
         if (!label)
         {
             label = IUITextField(createInFontContext(UITextField));
-            addChild(DisplayObject(label));
+            addChild(IUIComponent(label));
         }
 
         if (!background)
@@ -411,7 +416,7 @@ public class AdvancedDataGridHeaderRenderer
             background = new UIComponent();
             addChild(background);
         }
-    } */
+    } 
 
     /**
      *  @private
@@ -419,7 +424,7 @@ public class AdvancedDataGridHeaderRenderer
      *  Create an instance of the sort item renderer if specified,
      *  and set the text into the text field.
      */
-    /* override protected function commitProperties():void
+    override protected function commitProperties():void
     {
         super.commitProperties();
 
@@ -428,8 +433,8 @@ public class AdvancedDataGridHeaderRenderer
 
         if (!sortItemRendererInstance || sortItemRendererChanged)
         {
-            if (!sortItemRenderer)
-                sortItemRenderer = ClassFactory(grid.sortItemRenderer);
+            // if (!sortItemRenderer)
+            //     sortItemRenderer = ClassFactory(grid.sortItemRenderer);
 
             if (sortItemRenderer)
             {
@@ -440,7 +445,7 @@ public class AdvancedDataGridHeaderRenderer
                 //
                 // sortItemRendererInstance.owner = grid;
 
-                addChild( DisplayObject(sortItemRendererInstance) );
+                addChild( IUIComponent(sortItemRendererInstance) );
             }
 
              sortItemRendererChanged = false;
@@ -469,15 +474,15 @@ public class AdvancedDataGridHeaderRenderer
         if (_data != null)
         {
             label.text      = listData.label ? listData.label : " ";
-            label.multiline = grid.variableRowHeight;
-            if( _data is AdvancedDataGridColumn)
-                label.wordWrap = grid.columnHeaderWordWrap(_data as AdvancedDataGridColumn);
+            // label.multiline = grid.variableRowHeight;
+            // if( _data is AdvancedDataGridColumn)
+            //     label.wordWrap = grid.columnHeaderWordWrap(_data as AdvancedDataGridColumn);
                 
                 
 //             if (listData.columnIndex > -1)
 //                 label.wordWrap = grid.columnHeaderWordWrap(grid.columns[listData.columnIndex]);
-            else
-                label.wordWrap = grid.wordWrap;
+            // else
+            //     label.wordWrap = grid.wordWrap;
 
             if (_data is AdvancedDataGridColumn)
             {
@@ -491,16 +496,16 @@ public class AdvancedDataGridHeaderRenderer
                     dataTips = false;
                 if (dataTips)
                 {
-                    if (label.textWidth > label.width 
-                        || column.dataTipFunction || column.dataTipField 
-                        || grid.dataTipFunction || grid.dataTipField)
-                    {
-                        toolTip = column.itemToDataTip(_data);
-                    }
-                    else
-                    {
-                        toolTip = null;
-                    }
+                    // if (label.textWidth > label.width 
+                    //     || column.dataTipFunction || column.dataTipField 
+                    //     || grid.dataTipFunction || grid.dataTipField)
+                    // {
+                    //     toolTip = column.itemToDataTip(_data);
+                    // }
+                    // else
+                    // {
+                    //     toolTip = null;
+                    // }
                 }
                 else
                 {
@@ -516,12 +521,12 @@ public class AdvancedDataGridHeaderRenderer
 
         if (sortItemRendererInstance is IInvalidating)
             IInvalidating(sortItemRendererInstance).invalidateProperties();
-    } */
+    } 
 
     /**
      *  @private
      */
-    /* override protected function measure():void
+    override protected function measure():void
     {
         super.measure();
 
@@ -586,12 +591,12 @@ public class AdvancedDataGridHeaderRenderer
         // Set required width and height
         measuredMinWidth  = measuredWidth  = w;
         measuredMinHeight = measuredHeight = h;
-    } */
+    } 
     
     /**
      *  @private
      */
-    /* override protected function updateDisplayList(unscaledWidth:Number,
+    override protected function updateDisplayList(unscaledWidth:Number,
                                                   unscaledHeight:Number):void
     {
         super.updateDisplayList(unscaledWidth, unscaledHeight);
@@ -653,8 +658,8 @@ public class AdvancedDataGridHeaderRenderer
         label.setActualSize(labelWidth, labelHeight);
         
         // truncate only if the truncate flag is set
-        if (truncate && !label.multiline)
-            label.truncateToFit();
+        // if (truncate && !label.multiline)
+        //     label.truncateToFit();
 
         // Calculate position of label, by default center it
         var labelX:Number;
@@ -740,8 +745,8 @@ public class AdvancedDataGridHeaderRenderer
         {
             if (!enabled)
                 labelColor = getStyle("disabledColor");
-            else if (grid.isItemHighlighted(listData.uid))
-                labelColor = getStyle("textRollOverColor");
+            // else if (grid.isItemHighlighted(listData.uid))
+            //     labelColor = getStyle("textRollOverColor");
             else if (grid.isItemSelected(listData.uid))
                 labelColor = getStyle("textSelectedColor");
             else
@@ -757,9 +762,9 @@ public class AdvancedDataGridHeaderRenderer
             background.graphics.beginFill(0xFFFFFF, 0.0); // transparent
             background.graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
             background.graphics.endFill();
-            setChildIndex( DisplayObject(background), 0 );
+            setChildIndex( IUIComponent(background), 0 );
         }
-    } */
+    } 
 
     //--------------------------------------------------------------------------
     //
@@ -787,19 +792,20 @@ public class AdvancedDataGridHeaderRenderer
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    /* public function mouseEventToHeaderPart(event:MouseEvent):String
+    public function mouseEventToHeaderPart(event:MouseEvent):String
     {
-        if(sortItemRendererInstance == null)
-            return AdvancedDataGrid.HEADER_TEXT_PART;
+        return null;
+        // if(sortItemRendererInstance == null)
+        //     return AdvancedDataGrid.HEADER_TEXT_PART;
 
-        var point:Point = new Point(event.stageX, event.stageY);
-        point = globalToLocal(point);
+        // var point:Point = new Point(event.stageX, event.stageY);
+        // point = globalToLocal(point);
 
-        // Needs to be in sync with the logic in measure() and updateDisplayList()
-        return point.x < sortItemRendererInstance.x
-                         ? AdvancedDataGrid.HEADER_TEXT_PART
-                         : AdvancedDataGrid.HEADER_ICON_PART;
-    } */
+        // // Needs to be in sync with the logic in measure() and updateDisplayList()
+        // return point.x < sortItemRendererInstance.x
+        //                  ? AdvancedDataGrid.HEADER_TEXT_PART
+        //                  : AdvancedDataGrid.HEADER_ICON_PART;
+    } 
 
     /**
      *  Returns the sort information for this column from the AdvancedDataGrid control
@@ -818,10 +824,12 @@ public class AdvancedDataGridHeaderRenderer
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-   /*  protected function getFieldSortInfo():SortInfo
+    // protected function getFieldSortInfo():SortInfo
+    protected function getFieldSortInfo():Object
     {
-       	return grid.getFieldSortInfo(grid.mx_internal::rawColumns[listData.columnIndex]);
-    } */
+       	// return grid.getFieldSortInfo(grid.mx_internal::rawColumns[listData.columnIndex]);
+       	return null;
+    } 
 
     //--------------------------------------------------------------------------
     //
@@ -839,15 +847,15 @@ public class AdvancedDataGridHeaderRenderer
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-   /*  protected function toolTipShowHandler(event:ToolTipEvent):void
+    protected function toolTipShowHandler(event:ToolTipEvent):void
     {
         var toolTip:IToolTip = event.toolTip;
-		var xPos:int = DisplayObject(systemManager).mouseX + 11;
-        var yPos:int = DisplayObject(systemManager).mouseY + 22;
+		var xPos:int = IUIComponent(systemManager).mouseX + 11;
+        var yPos:int = IUIComponent(systemManager).mouseY + 22;
         // Calculate global position of label.
         var pt:Point = new Point(xPos, yPos);
-        pt = DisplayObject(systemManager).localToGlobal(pt);
-        pt = DisplayObject(systemManager.getSandboxRoot()).globalToLocal(pt);           
+        pt = UIComponent(systemManager).localToGlobal(pt);
+        pt = UIComponent(systemManager.getSandboxRoot()).globalToLocal(pt);           
         
         toolTip.move(pt.x, pt.y + (height - toolTip.height) / 2);
             
@@ -856,16 +864,46 @@ public class AdvancedDataGridHeaderRenderer
         if (toolTip.x + toolTip.width > screenRight)
             toolTip.move(screenRight - toolTip.width, toolTip.y);
 
-    } */
+    } 
 
     /**
      *  @private
      */
-    /* mx_internal function getLabel():IUITextField
+    mx_internal function getLabel():IUITextField
     {
         return label;
-    } */
+    } 
+
+
+    public function get nestLevel():int
+    {
+    	throw new Error("Method not implemented.");
+    }
+
+    public function set nestLevel(value:int):void
+    {
+    	throw new Error("Method not implemented.");
+    }
 
+    public function get processedDescriptors():Boolean
+    {
+    	throw new Error("Method not implemented.");
+    }
+
+    public function set processedDescriptors(value:Boolean):void
+    {
+    	throw new Error("Method not implemented.");
+    }
+
+    public function get updateCompletePendingFlag():Boolean
+    {
+    	throw new Error("Method not implemented.");
+    }
+
+    public function set updateCompletePendingFlag(value:Boolean):void
+    {
+    	throw new Error("Method not implemented.");
+    }
 } // end class
 
 } // end package


[royale-asjs] 05/13: column headers now display text, but we still need to display the group header

Posted by ah...@apache.org.
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 0ba8f786e9a0c24ff634a9c1a35ff09fc677301a
Author: Alex Harui <ah...@apache.org>
AuthorDate: Thu Dec 26 00:30:29 2019 -0800

    column headers now display text, but we still need to display the group header
---
 .../src/main/royale/mx/controls/AdvancedDataGrid.as  | 20 +++++++++++++-------
 .../AdvancedDataGridColumn.as                        |  2 +-
 .../AdvancedDataGridHeaderRenderer.as                | 14 ++++++++++++--
 .../main/royale/mx/controls/beads/DataGridView.as    |  7 +++++++
 4 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
index b3931f2..27e5c19 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
@@ -44,14 +44,16 @@ package mx.controls
     import mx.collections.IHierarchicalCollectionView;
     import mx.collections.IHierarchicalCollectionViewCursor;
     import mx.collections.IHierarchicalData;
-    import mx.collections.IViewCursor;
     import mx.collections.ISort;
+    import mx.collections.IViewCursor;
     import mx.collections.Sort;
     import mx.collections.SortField;
     import mx.controls.beads.AdvancedDataGridSortBead;
     import mx.controls.beads.AdvancedDataGridView;
-    import mx.controls.beads.DataGridLinesBeadForICollectionView;
     import mx.controls.beads.DataGridColumnResizeBead;
+    import mx.controls.beads.DataGridLinesBeadForICollectionView;
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup;
     import mx.controls.dataGridClasses.DataGridColumn;
     import mx.controls.listClasses.AdvancedListBase;
     import mx.core.mx_internal;
@@ -64,7 +66,7 @@ package mx.controls
     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.events.Event;
     import org.apache.royale.html.DataGridButtonBar;
 
 use namespace mx_internal;
@@ -1376,11 +1378,13 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
                         columnGroupRendererChanged(AdvancedDataGridColumnGroup(_groupedColumns[i]));
                 }
             }
-            
+            */
             _groupedColumns = value;
+            /*
             groupedColumnsChanged = true;
             invalidateProperties();
         } */
+        /*super.*/columns = getLeafColumns(_groupedColumns.slice(0));
     }
 
     //
@@ -6512,7 +6516,7 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
     /**
      *  @private
      */
-    /* private function getLeafColumns(groupedColumns:Array):Array
+    private function getLeafColumns(groupedColumns:Array):Array
     {
         var i:int=0; 
         while (i < groupedColumns.length)
@@ -6531,7 +6535,7 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
             }
         }
         return groupedColumns;
-    } */
+    }
 
     /**
      *  @private
@@ -9459,10 +9463,12 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
      */
     public function set columns(value:Array):void
     {
+        var index:int = 0;
         IDataGridModel(model).columns = value;
-        for each (var col:DataGridColumn in value)
+        for each (var col:AdvancedDataGridColumn in value)
         {
             col.owner = this;
+            col.colNum = index++;
         }
     }
 
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
index 505737f..1a40e5c 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
@@ -318,7 +318,7 @@ public class AdvancedDataGridColumn extends DataGridColumn
      *  In MXML, the default order of the columns is the order of the
      *  <code>mx:AdvancedDataGridColumn</code> tags.
      */
-   // mx_internal var colNum:Number;
+    mx_internal var colNum:Number;
     
     // preferred width is the number we should use when measuring
     // regular width will be changed if we shrink columns to fit.
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 7e5bf48..3c196c0 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
@@ -186,6 +186,10 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
 
         // InteractiveObject variables.
         tabEnabled   = false;
+        COMPILE::JS
+        {
+            isAbsolute = false;
+        }
 
         addEventListener(ToolTipEvent.TOOL_TIP_SHOW, toolTipShowHandler); 
     }
@@ -305,6 +309,12 @@ 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,
+                col.dataField, 
+                col.colNum, "", col.owner);
+        listData = ld;
+        
         invalidateProperties();
         commitProperties();
 
@@ -747,8 +757,8 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
                 labelColor = getStyle("disabledColor");
             // else if (grid.isItemHighlighted(listData.uid))
             //     labelColor = getStyle("textRollOverColor");
-            else if (grid.isItemSelected(listData.uid))
-                labelColor = getStyle("textSelectedColor");
+            //else if (grid.isItemSelected(listData.uid))
+            //    labelColor = getStyle("textSelectedColor");
             else
                 labelColor = getStyle("color");
 
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
index a5fd987..2a89092 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
@@ -24,8 +24,10 @@ package mx.controls.beads
     import mx.controls.AdvancedDataGrid;
     import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
     import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnList;
+    import mx.core.mx_internal;
     import mx.events.CollectionEvent;
     import mx.utils.ObjectUtil;
+    use namespace mx_internal;
     
     import org.apache.royale.core.IBeadModel;
     import org.apache.royale.core.IDataGrid;
@@ -152,6 +154,7 @@ package mx.controls.beads
                 
                 if (!cols)
                 {
+                    var index:int = 0;
                     // introspect the first item and use its fields
                     var itmObj:Object = iterator.current;
                     for (var p:String in itmObj)
@@ -161,6 +164,8 @@ package mx.controls.beads
                             col = new AdvancedDataGridColumn();
                             col.dataField = p;
                             newCols.push(col);
+                            col.owner = _strand as AdvancedDataGrid;
+                            col.colNum = index++;
                         }
                     }
                 }
@@ -176,6 +181,8 @@ package mx.controls.beads
                             colName = QName(colName).localName;
                         col = new AdvancedDataGridColumn();
                         col.dataField = String(colName);
+                        col.owner = _strand as AdvancedDataGrid;
+                        col.colNum = i;
                         newCols.push(col);
                     }
                 }


[royale-asjs] 02/13: Take care of case where you want to drop a dragged item outside app

Posted by ah...@apache.org.
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 3ad6ffc1d22f361e471ec722cbcdf4000bfd73e2
Author: DESKTOP-RH4S838\Yishay <yi...@hotmail.com>
AuthorDate: Wed Dec 11 11:19:49 2019 +0200

    Take care of case where you want to drop a dragged item outside app
---
 .../org/apache/royale/html/beads/OutOfApplicationDropTargetBead.as   | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/OutOfApplicationDropTargetBead.as b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/OutOfApplicationDropTargetBead.as
index 48dc322..e30bfc4 100644
--- a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/OutOfApplicationDropTargetBead.as
+++ b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/OutOfApplicationDropTargetBead.as
@@ -145,11 +145,6 @@ package org.apache.royale.html.beads
 				return;
 			}
 
-			if (DragEvent.dragInitiator) {
-				DragEvent.dragInitiator.acceptingDrop(_strand, "object");
-			}
-
-
 			// Let the dragInitiator know the drop has been completed.
 			if (DragEvent.dragInitiator) {
 				DragEvent.dragInitiator.acceptedDrop(_strand, "object");


[royale-asjs] 04/13: fix text in UITextField

Posted by ah...@apache.org.
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 69027708cf4ebf88b0c4ff3af67f09d32a75c5d7
Author: Alex Harui <ah...@apache.org>
AuthorDate: Thu Dec 26 00:29:04 2019 -0800

    fix text in UITextField
---
 .../MXRoyale/src/main/royale/mx/core/UITextField.as        | 14 ++++----------
 1 file changed, 4 insertions(+), 10 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 a0e49e6..90068fc 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextField.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UITextField.as
@@ -717,10 +717,7 @@ public class UITextField  extends UIComponent implements IUITextField
      //  text
      //----------------------------------
      
-     
-     COMPILE::JS
-     protected var textNode:window.Text;
-     
+          
      COMPILE::JS
      private var _text:String = "";
      
@@ -756,12 +753,9 @@ public class UITextField  extends UIComponent implements IUITextField
              }
              COMPILE::JS
              {
-                 if (textNode)
-                 {
-                     _text = value;
-                     textNode.nodeValue = value;
-                     this.dispatchEvent('textChange');
-                 }
+                 _text = value;
+                 this.element.innerText = value;
+                 this.dispatchEvent('textChange');
              }
              
              invalidateSize();


[royale-asjs] 03/13: This flag needs to be raised somewhere other than init

Posted by ah...@apache.org.
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 6b00c371f2df0c2f33ef7b91566ba8ada2bef9a0
Author: DESKTOP-RH4S838\Yishay <yi...@hotmail.com>
AuthorDate: Thu Dec 19 09:12:22 2019 +0200

    This flag needs to be raised somewhere other than init
---
 .../royale/org/apache/royale/html/beads/SingleSelectionDragSourceBead.as | 1 +
 1 file changed, 1 insertion(+)

diff --git a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDragSourceBead.as b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDragSourceBead.as
index 0723da7..87ef4eb 100644
--- a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDragSourceBead.as
+++ b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SingleSelectionDragSourceBead.as
@@ -195,6 +195,7 @@ package org.apache.royale.html.beads
 			}
 
 			var newEvent:Event = new Event("start", false, true);
+			continueDragOperation = true;
 			dispatchEvent(newEvent);
 			if (newEvent.defaultPrevented) {
 				continueDragOperation = false;


[royale-asjs] 09/13: 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 develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 0898e23b6f0b5712efee62e245b751589d2ff190
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] 13/13: fix up after merge

Posted by ah...@apache.org.
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 73c77af78d8b07c4deea8b4a45980759a601d89a
Author: Alex Harui <ah...@apache.org>
AuthorDate: Sun Dec 29 16:21:39 2019 -0800

    fix up after merge
---
 .../MXRoyale/src/main/resources/defaults.css       |  5 ++-
 .../beads/AdvancedDataGridHeaderLayout.as          |  3 +-
 .../AdvancedDataGridHeaderRenderer.as              | 39 ++++++++++++++++++++++
 .../main/royale/mx/controls/beads/DataGridView.as  |  5 ++-
 4 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 302a38a..b35b81a 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -83,7 +83,10 @@ adg|AdvancedDataGridButtonBar {
 adg|AdvancedDataGridHeaderRenderer {
 	horizontalAlign: center;
 	vertical-align: middle;
-	border: 1px solid #222222;
+	border-top: 1px solid #222222;
+	border-bottom: 1px solid #222222;
+	border-right: 1px solid #222222;
+	border-left: none;
 	font-weight: bold;
 }
 
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 2697cc6..d78955b 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
@@ -19,6 +19,7 @@
 
 package mx.containers.beads
 {
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridHeaderRenderer;
 	import mx.core.EdgeMetrics;
 	import mx.core.UIComponent;
 	
@@ -129,7 +130,7 @@ public class AdvancedDataGridHeaderLayout extends LayoutBase
         {	
             var ilc:ILayoutChild = contentView.getElementAt(i) as ILayoutChild;
             if (ilc == null || !ilc.visible) continue;
-            if (!(ilc is IStyleableObject)) continue;
+            if (!(ilc is AdvancedDataGridHeaderRenderer)) continue;
             
             COMPILE::SWF {
                 if (buttonWidths) {
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 cb0b5b4..30a2d7c 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
@@ -30,6 +30,7 @@ import flash.text.TextLineMetrics;
 */
 import mx.controls.AdvancedDataGrid;
 import mx.controls.advancedDataGridClasses.AdvancedDataGridButtonBar;
+import mx.controls.beads.DataGridView;
 import mx.controls.dataGridClasses.DataGridColumn;
 import mx.controls.listClasses.BaseListData;
 import mx.controls.listClasses.IDropInListItemRenderer;
@@ -51,6 +52,7 @@ import mx.managers.ISystemManager;
 import org.apache.royale.core.IChild;
 import org.apache.royale.core.TextLineMetrics;
 import org.apache.royale.events.Event;
+import org.apache.royale.events.ItemClickedEvent;
 import org.apache.royale.events.MouseEvent;
 import org.apache.royale.geom.Point;
 import org.apache.royale.geom.Rectangle;
@@ -195,8 +197,39 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
         // InteractiveObject variables.
         tabEnabled   = false;
         addEventListener(ToolTipEvent.TOOL_TIP_SHOW, toolTipShowHandler); 
+        addEventListener('click',handleClickEvent);
     }
     
+    /**
+     * @private
+     */
+    protected function handleClickEvent(event:MouseEvent):void
+    {
+        var newEvent:ItemClickedEvent = new ItemClickedEvent("itemClicked");
+        newEvent.index = index;
+        newEvent.data = data;
+        dispatchEvent(newEvent);
+    }
+    
+    private var _index:int;
+    
+    /**
+     *  The position with the dataProvider being shown by the itemRenderer instance.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.8
+     */
+    public function get index():int
+    {
+        return _index;
+    }
+    public function set index(value:int):void
+    {
+        _index = value;
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Variables
@@ -332,6 +365,12 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
             if (label)
                 label = label.replace(" ", "&nbsp;");
         }
+        var dg:UIComponent = col.owner;
+        if (index == ((dg.view as DataGridView).header as AdvancedDataGridButtonBar).selectedIndex)
+        {
+            label += " " + (col.sortDescending ? "▼" : "▲");
+        }
+        
         return label;
     }
 
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
index ca2bb57..edf8a8a 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
@@ -111,12 +111,10 @@ package mx.controls.beads
             {
                 generateCols();
                 createLists();
-                (header as DataGridButtonBar).dataProvider = sharedModel.columns;
+                (header as DataGridButtonBar).dataProvider = sharedModel.columns;            
             }
             if (sharedModel.columns == null)
                 return;
-            if (visibleColumns == null)
-                visibleColumns = sharedModel.columns;
             super.handleDataProviderChanged(event);
         }
 
@@ -162,6 +160,7 @@ package mx.controls.beads
                     var index:int = 0;
                     // introspect the first item and use its fields
                     var itmObj:Object = iterator.current;
+
                     for (var p:String in itmObj)
                     {
                         if (p != "uid")


[royale-asjs] 06/13: some abstractions for the subclasses

Posted by ah...@apache.org.
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 75be13a3d14b2b0180a08da26cae4c42c6ba448a
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Dec 27 20:54:51 2019 -0800

    some abstractions for the subclasses
---
 .../org/apache/royale/html/beads/DataGridView.as   |  2 +-
 .../royale/html/beads/layouts/DataGridLayout.as    | 33 ++++++++++++++++------
 2 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
index 0e7d8ec..597559c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
@@ -139,7 +139,7 @@ package org.apache.royale.html.beads
 
                 var columnLayoutClass:Class = ValuesManager.valuesImpl.getValue(host, "columnLayoutClass") as Class;
                 assert(columnLayoutClass != null,"columnLayoutClass for DataGrid must be set!")
-				var bblayout:ButtonBarLayout = new columnLayoutClass() as ButtonBarLayout;
+				var bblayout:IBead = new columnLayoutClass() as IBead;
 				_header.addBead(bblayout as IBead);
 				_header.addBead(new Viewport() as IBead);
 				host.strandChildren.addElement(_header as IChild);
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
index ae55038..be56f19 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
@@ -99,6 +99,26 @@ package org.apache.royale.html.beads.layouts
 			layout();
 		}
 		
+        protected function getColumnsForLayout():Array
+        {
+            var header:IUIBase = (uiHost.view as IDataGridView).header;
+            // fancier DG's will filter invisible columns and only put visible columns
+            // in the bbmodel, so do all layout based on the bbmodel, not the set
+            // of columns that may contain invisible columns
+            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            return bbmodel.dataProvider as Array;
+        }
+
+        protected function setHeaderWidths(columnWidths:Array):void
+        {
+            var header:IUIBase = (uiHost.view as IDataGridView).header;
+            // fancier DG's will filter invisible columns and only put visible columns
+            // in the bbmodel, so do all layout based on the bbmodel, not the set
+            // of columns that may contain invisible columns
+            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            bbmodel.buttonWidths = columnWidths;
+        }
+        
 		/**
 		 * @copy org.apache.royale.core.IBeadLayout#layout
          * @royaleignorecoercion org.apache.royale.core.IBorderPaddingMarginValuesImpl
@@ -112,10 +132,7 @@ package org.apache.royale.html.beads.layouts
 		public function layout():Boolean
 		{
 			var header:IUIBase = (uiHost.view as IDataGridView).header;
-            // fancier DG's will filter invisible columns and only put visible columns
-            // in the bbmodel, so do all layout based on the bbmodel, not the set
-            // of columns that may contain invisible columns
-            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            var arrayOfColumns:Array = getColumnsForLayout();
 			var listArea:IUIBase = (uiHost.view as IDataGridView).listArea;
 			
 			var displayedColumns:Array = (uiHost.view as IDataGridView).columnLists;
@@ -126,11 +143,11 @@ package org.apache.royale.html.beads.layouts
 			var useHeight:Number = uiHost.height - (borderMetrics.top + borderMetrics.bottom);
 			
 			var xpos:Number = 0;
-			var defaultColumnWidth:Number = (useWidth) / bbmodel.dataProvider.length;
+			var defaultColumnWidth:Number = (useWidth) / arrayOfColumns.length;
 			var columnWidths:Array = [];
 			
-			for(var i:int=0; i < bbmodel.dataProvider.length; i++) {
-				var columnDef:IDataGridColumn = bbmodel.dataProvider[i] as IDataGridColumn;
+			for(var i:int=0; i < arrayOfColumns.length; i++) {
+				var columnDef:IDataGridColumn = arrayOfColumns[i] as IDataGridColumn;
 				var columnList:UIBase = displayedColumns[i] as UIBase;
 				
 				// probably do not need to set (x,y), but if the Container's layout requires it, they will be set.
@@ -148,7 +165,7 @@ package org.apache.royale.html.beads.layouts
 				xpos += columnList.width;
 			}
 			
-			bbmodel.buttonWidths = columnWidths;
+            setHeaderWidths(columnWidths);
 			
 			COMPILE::SWF {
                 header.y = borderMetrics.top;


[royale-asjs] 07/13: grouped columns appear in the right places. Next is to improve the visuals

Posted by ah...@apache.org.
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 95e87f5a14ca5fc01970b14d95a7405e6c147bb4
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Dec 27 20:55:33 2019 -0800

    grouped columns appear in the right places.  Next is to improve the visuals
---
 .../MXRoyale/src/main/resources/defaults.css       |   3 +-
 .../beads/AdvancedDataGridHeaderLayout.as          | 161 +++++++++++++++++++++
 .../main/royale/mx/controls/AdvancedDataGrid.as    |   5 +-
 .../AdvancedDataGridButtonBar.as                   |   9 ++
 .../AdvancedDataGridHeaderRenderer.as              |  54 ++++++-
 .../mx/controls/beads/AdvancedDataGridView.as      |  18 ++-
 .../main/royale/mx/controls/beads/DataGridView.as  |   4 +
 .../beads/layouts/AdvancedDataGridLayout.as        |  37 +++++
 .../mx/controls/beads/layouts/DataGridLayout.as    |  28 ++--
 9 files changed, 291 insertions(+), 28 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index cc1e8d4..cb86796 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -77,6 +77,7 @@ Basic|DataGridButtonBar {
 
 adg|AdvancedDataGridButtonBar {
 	IItemRenderer: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridHeaderRenderer");
+	position: absolute;
 }
 
 AdvancedDataGrid
@@ -90,7 +91,7 @@ AdvancedDataGrid
 	IDataProviderNotifier: ClassReference("mx.controls.beads.DataProviderChangeNotifier");
 	columnClass: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridColumnList");
 	columnContainerClass: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridButtonBar");
-	columnLayoutClass: ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout");
+	columnLayoutClass: ClassReference("mx.containers.beads.AdvancedDataGridHeaderLayout");
 	listAreaClass: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridListArea");
 	
 	background-color: #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
new file mode 100644
index 0000000..8d3ffc3
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
@@ -0,0 +1,161 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.containers.beads
+{
+	import mx.core.EdgeMetrics;
+	import mx.core.UIComponent;
+	
+	import org.apache.royale.core.LayoutBase;
+	import org.apache.royale.geom.Rectangle;
+    import org.apache.royale.core.IBeadLayout;
+    import org.apache.royale.core.ILayoutChild;
+    import org.apache.royale.core.ILayoutView;
+    import org.apache.royale.core.IStyleableObject;
+    import org.apache.royale.core.IStrand;
+    import org.apache.royale.html.beads.models.ButtonBarModel;
+
+/*
+import mx.core.mx_internal;
+import mx.events.ChildExistenceChangedEvent;
+import mx.events.MoveEvent;
+import mx.resources.IResourceManager;
+import mx.resources.ResourceManager;
+import flash.utils.Dictionary;
+
+use namespace mx_internal;
+*/
+
+/**
+ *  @private
+ *  The AdvancedDataGridHeaderLayout class is for internal use only.
+ */
+public class AdvancedDataGridHeaderLayout extends LayoutBase
+{
+    
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function AdvancedDataGridHeaderLayout()
+    {
+        super();
+    }
+	
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+	
+	private var _strand:IStrand;
+	
+	override public function set strand(value:IStrand):void
+	{
+		_strand = value;
+		super.strand = value;
+		
+	}
+	
+    private var _buttonWidths:Array = null;
+    
+    /**
+     *  An array of widths (Number), one per button. These values supersede the
+     *  default of equally-sized buttons.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9
+     */
+    public function get buttonWidths():Array
+    {
+        return _buttonWidths;
+    }
+    public function set buttonWidths(value:Array):void
+    {
+        _buttonWidths = value;
+    }
+    
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+	override public function layout():Boolean
+	{
+        var contentView:ILayoutView = layoutView;
+        
+        var model:ButtonBarModel = (host as IStrand).getBeadByType(ButtonBarModel) as ButtonBarModel;
+        if (model) {
+            buttonWidths = model.buttonWidths;
+        }
+        
+        var n:int = contentView.numElements;
+        if (n <= 0) return false;
+        
+        var xx:Number = 0;
+        
+        for (var i:int=0; i < n; i++)
+        {	
+            var ilc:ILayoutChild = contentView.getElementAt(i) as ILayoutChild;
+            if (ilc == null || !ilc.visible) continue;
+            if (!(ilc is IStyleableObject)) continue;
+            
+            COMPILE::SWF {
+                if (buttonWidths) {
+                    var widthValue:* = buttonWidths[i];
+                    
+                    if (widthValue != null) ilc.width = Number(widthValue);
+                    ilc.x = xx;
+                    xx += ilc.width;
+                }
+            }
+                
+            COMPILE::JS {
+                // otherwise let the flexbox layout handle matters on its own.
+                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;
+            }
+        }
+        
+        return true;
+	}
+}
+}
+
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
index 27e5c19..1e32fd4 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
@@ -48,12 +48,12 @@ package mx.controls
     import mx.collections.IViewCursor;
     import mx.collections.Sort;
     import mx.collections.SortField;
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup;
     import mx.controls.beads.AdvancedDataGridSortBead;
     import mx.controls.beads.AdvancedDataGridView;
     import mx.controls.beads.DataGridColumnResizeBead;
     import mx.controls.beads.DataGridLinesBeadForICollectionView;
-    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
-    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup;
     import mx.controls.dataGridClasses.DataGridColumn;
     import mx.controls.listClasses.AdvancedListBase;
     import mx.core.mx_internal;
@@ -6521,6 +6521,7 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
         var i:int=0; 
         while (i < groupedColumns.length)
         {
+            (groupedColumns[i] as AdvancedDataGridColumn).owner = this;
             if (groupedColumns[i] is AdvancedDataGridColumnGroup && groupedColumns[i].children && groupedColumns[i].children.length >0)
             {
                 var prefix:Array = groupedColumns.slice(0,i);
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridButtonBar.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridButtonBar.as
index 1fbfb95..758ca4d 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridButtonBar.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridButtonBar.as
@@ -20,6 +20,8 @@
 package mx.controls.advancedDataGridClasses
 {
 
+    import mx.containers.beads.AdvancedDataGridHeaderLayout;
+    
     import org.apache.royale.html.DataGridButtonBar;
 
     /**
@@ -39,6 +41,13 @@ package mx.controls.advancedDataGridClasses
             typeNames += " AdvancedDataGridButtonBar";
 
         }
+        
+        override public function addedToParent():void
+        {
+            var layout:AdvancedDataGridHeaderLayout = new AdvancedDataGridHeaderLayout();
+            addBead(layout);
+            super.addedToParent();
+        }
 
     }
 
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 3c196c0..2dac500 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
@@ -29,6 +29,8 @@ import flash.geom.Rectangle;
 import flash.text.TextLineMetrics;
 */
 import mx.controls.AdvancedDataGrid;
+import mx.controls.advancedDataGridClasses.AdvancedDataGridButtonBar;
+import mx.controls.dataGridClasses.DataGridColumn;
 import mx.controls.listClasses.BaseListData;
 import mx.controls.listClasses.IDropInListItemRenderer;
 import mx.controls.listClasses.IListItemRenderer;
@@ -37,18 +39,22 @@ import mx.core.IDataRenderer;
 import mx.core.IFactory;
 import mx.core.IInvalidating;
 import mx.core.IToolTip;
+import mx.core.IUIComponent;
 import mx.core.IUITextField;
 import mx.core.UIComponent;
 import mx.core.UITextField;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
 import mx.events.ToolTipEvent;
-import mx.core.IUIComponent;
-import org.apache.royale.geom.Point;
+import mx.managers.ISystemManager;
+
+import org.apache.royale.core.IChild;
 import org.apache.royale.core.TextLineMetrics;
-import org.apache.royale.geom.Rectangle;
 import org.apache.royale.events.Event;
 import org.apache.royale.events.MouseEvent;
+import org.apache.royale.geom.Point;
+import org.apache.royale.geom.Rectangle;
+import org.apache.royale.html.DataGridButtonBar;
 
 use namespace mx_internal;
 
@@ -186,11 +192,6 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
 
         // InteractiveObject variables.
         tabEnabled   = false;
-        COMPILE::JS
-        {
-            isAbsolute = false;
-        }
-
         addEventListener(ToolTipEvent.TOOL_TIP_SHOW, toolTipShowHandler); 
     }
     
@@ -427,6 +428,8 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
             addChild(background);
         }
     } 
+    
+    private var childHeaders:DataGridButtonBar;
 
     /**
      *  @private
@@ -521,6 +524,13 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
                 {
                     toolTip = null;
                 }
+                if (data is AdvancedDataGridColumnGroup)
+                {
+                    var adgcg:AdvancedDataGridColumnGroup = data as AdvancedDataGridColumnGroup;
+                    childHeaders = new AdvancedDataGridButtonBar();
+                    childHeaders.dataProvider = adgcg.children;
+                    addElement(childHeaders);                    
+                }
              }
         }
         else
@@ -774,6 +784,18 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
             background.graphics.endFill();
             setChildIndex( IUIComponent(background), 0 );
         }
+        if (childHeaders)
+        {
+            var adgcg:AdvancedDataGridColumnGroup = data as AdvancedDataGridColumnGroup;
+            var buttonWidths:Array = [];
+            for (var i:int = 0; i < adgcg.children.length; i++)
+                buttonWidths.push((adgcg.children[i] as DataGridColumn).columnWidth);
+            childHeaders.buttonWidths = buttonWidths;
+            childHeaders.height = unscaledHeight / 2;
+            childHeaders.width = unscaledWidth;
+            childHeaders.x = 0;
+            childHeaders.y = unscaledHeight / 2;
+        }
     } 
 
     //--------------------------------------------------------------------------
@@ -884,7 +906,23 @@ public class AdvancedDataGridHeaderRenderer extends UIComponent implements IData
         return label;
     } 
 
+    override public function setWidth(value:Number, noEvent:Boolean = false):void
+    {
+        super.setWidth(value, noEvent);
+        updateDisplayList(width, height);
+    }
 
+    override public function get systemManager():ISystemManager
+    {
+        var sm:ISystemManager = super.systemManager;
+        if (!sm)
+        {
+            // skip a layer because parent ButtonBar is not IUIComponent
+            systemManager = ((parent as IChild).parent as IUIComponent).systemManager;
+        }
+        return sm;
+    }
+    
     public function get nestLevel():int
     {
     	throw new Error("Method not implemented.");
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
index b2dda53..3d79972 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
@@ -73,15 +73,14 @@ package mx.controls.beads
             IEventDispatcher(host).addEventListener("columnsInvalid", handleColumnsInvalid);
             handleColumnsInvalid(null);
         }		
-        
+
         private function handleColumnsInvalid(event:Event):void
         {
             if (!columnLists) return;
             
-            var host:IDataGrid = _strand as IDataGrid;
+            var host:AdvancedDataGrid = _strand as AdvancedDataGrid;
             var sharedModel:IDataGridModel = (host.model as IDataGridModel);
             
-            var visibleColumns:Array = [];
             columnLists.length = 0;
             for (var i:int=0; i < sharedModel.columns.length; i++)
             {
@@ -98,7 +97,18 @@ package mx.controls.beads
                     columnLists.push(list);
                 }
             }
-            (header as DataGridButtonBar).dataProvider = visibleColumns;
+            if (host.groupedColumns != null)
+            {
+                var groupedColumns:Array = [];
+                for (i = 0; i < host.groupedColumns.length; i++)
+                {
+                    if ((host.groupedColumns[i] as AdvancedDataGridColumn).visible)
+                        groupedColumns.push(host.groupedColumns[i]);
+                }
+                (header as DataGridButtonBar).dataProvider = groupedColumns;
+            }
+            else
+                (header as DataGridButtonBar).dataProvider = visibleColumns;
             
             host.dispatchEvent(new Event("layoutNeeded"));
         }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
index 2a89092..5a20ad1 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
@@ -61,6 +61,8 @@ package mx.controls.beads
 		{
         }
 
+        public var visibleColumns:Array = [];
+        
         override protected function handleInitComplete(event:Event):void
         {
             var host:IDataGrid = _strand as IDataGrid;
@@ -112,6 +114,8 @@ package mx.controls.beads
             }
             if (sharedModel.columns == null)
                 return;
+            if (visibleColumns == null)
+                visibleColumns = sharedModel.columns;
             super.handleDataProviderChanged(event);
         }
 
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
index 51856ed..d568241 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
@@ -18,6 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package mx.controls.beads.layouts
 {
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup;
     import mx.controls.dataGridClasses.DataGridColumn;
     
     import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
@@ -75,6 +76,42 @@ package mx.controls.beads.layouts
         public var maxVerticalScrollPosition:Number;
         
         public var actualRowHeight:Number;
+
+        override protected function setHeaderWidths(columnWidths:Array):void
+        {
+            var header:IUIBase = (uiHost.view as IDataGridView).header;
+            // fancier DG's will filter invisible columns and only put visible columns
+            // in the bbmodel, so do all layout based on the bbmodel, not the set
+            // of columns that may contain invisible columns
+            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            if (bbmodel.dataProvider.length != columnWidths.length)
+            {
+                // probably some grouped columns so recompute widths;
+                var newColumnWidths:Array = [];
+                for (var i:int = 0; i < bbmodel.dataProvider.length; i++)
+                {
+                    newColumnWidths.push(getHeaderColumnWidth(bbmodel.dataProvider[i] as DataGridColumn));
+                }
+                columnWidths = newColumnWidths;
+            }
+            super.setHeaderWidths(columnWidths);
+        }
+        
+        private function getHeaderColumnWidth(column:DataGridColumn):Number
+        {
+            if (column is AdvancedDataGridColumnGroup)
+            {
+                var adgcg:AdvancedDataGridColumnGroup = column as AdvancedDataGridColumnGroup;
+                var w:Number = 0;
+                for (var i:int = 0; i < adgcg.children.length; i++)
+                {
+                    w += getHeaderColumnWidth(adgcg.children[i] as DataGridColumn);
+                }
+                return w;
+            }
+            return column.columnWidth;
+        }
+        
         /**
          * @copy org.apache.royale.core.IBeadLayout#layout
          * @royaleignorecoercion org.apache.royale.core.IBorderPaddingMarginValuesImpl
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as
index 9f47d19..05312a6 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridLayout.as
@@ -26,7 +26,7 @@ package mx.controls.beads.layouts
     import org.apache.royale.html.beads.models.ButtonBarModel;
     import org.apache.royale.html.beads.layouts.DataGridLayout;
     import mx.controls.dataGridClasses.DataGridColumn;
-
+    import mx.controls.beads.DataGridView;
 	
     /**
      *  The DataGridLayout class.
@@ -50,6 +50,12 @@ package mx.controls.beads.layouts
 		{
         }
 
+        override protected function getColumnsForLayout():Array
+        {
+            var view:DataGridView = (uiHost.view as DataGridView);
+            return view.visibleColumns;    
+        }
+        
         /**
          * @copy org.apache.royale.core.IBeadLayout#layout
          * @royaleignorecoercion org.apache.royale.core.IBorderPaddingMarginValuesImpl
@@ -62,11 +68,7 @@ package mx.controls.beads.layouts
          */
         override public function layout():Boolean
         {
-            var header:IUIBase = (uiHost.view as IDataGridView).header;
-            // fancier DG's will filter invisible columns and only put visible columns
-            // in the bbmodel, so do all layout based on the bbmodel, not the set
-            // of columns that may contain invisible columns
-            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            var view:DataGridView = (uiHost.view as DataGridView);
             // do the proportional sizing of columns
             var borderMetrics:EdgeData = (ValuesManager.valuesImpl as IBorderPaddingMarginValuesImpl).getBorderMetrics(_strand as IUIBase);			
             var useWidth:Number = uiHost.width - (borderMetrics.left + borderMetrics.right);
@@ -74,10 +76,10 @@ package mx.controls.beads.layouts
             
             var totalWidths:Number = 0;
             var unspecifiedWidths:int = 0;
-            if (bbmodel.dataProvider)
+            if (view.visibleColumns)
             {
-                for(var i:int=0; i < bbmodel.dataProvider.length; i++) {
-                    var columnDef:DataGridColumn = bbmodel.dataProvider[i] as DataGridColumn;
+                for(var i:int=0; i < view.visibleColumns.length; i++) {
+                    var columnDef:DataGridColumn = view.visibleColumns[i] as DataGridColumn;
                     if (!isNaN(columnDef.width))
                         totalWidths += columnDef.width;
                     else
@@ -95,8 +97,8 @@ package mx.controls.beads.layouts
                 // in the remaining space
                 var remainingSpace:Number = useWidth - totalWidths;
                 var proportionateShare:Number = remainingSpace / unspecifiedWidths;
-                for(i=0; i < bbmodel.dataProvider.length; i++) {
-                    columnDef = bbmodel.dataProvider[i] as DataGridColumn;
+                for(i=0; i < view.visibleColumns.length; i++) {
+                    columnDef = view.visibleColumns[i] as DataGridColumn;
                     if (!isNaN(columnDef.width))
                         columnDef.columnWidth = columnDef.width;
                     else
@@ -108,8 +110,8 @@ package mx.controls.beads.layouts
                 if (totalWidths != useWidth)
                 {
                     var factor:Number = useWidth / totalWidths;
-                    for(i=0; i < bbmodel.dataProvider.length; i++) {
-                        columnDef = bbmodel.dataProvider[i] as DataGridColumn;
+                    for(i=0; i < view.visibleColumns.length; i++) {
+                        columnDef = view.visibleColumns[i] as DataGridColumn;
                         columnDef.columnWidth = columnDef.width * factor;
                     }                
                 }


[royale-asjs] 08/13: 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 develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 5078e6bca460f25d36a8ec1b1e48fc90d1d622a9
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 842564e..f8fb72d 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] 10/13: 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 develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 3c8843810ad639d504d9406abfbb99cce4915a34
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] 11/13: 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 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);


[royale-asjs] 12/13: get mxtests to pass

Posted by ah...@apache.org.
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 8f255dd18a1ee21f980b2d11e97057d047897baa
Author: Alex Harui <ah...@apache.org>
AuthorDate: Sat Dec 28 10:18:36 2019 -0800

    get mxtests to pass
---
 .../MXRoyale/src/main/resources/defaults.css       |  2 +-
 .../AdvancedDataGridColumn.as                      |  9 ---------
 .../mx/controls/beads/AdvancedDataGridView.as      | 15 ++++++++++++++
 .../main/royale/mx/controls/beads/DataGridView.as  | 23 +++++++++++-----------
 .../mx/controls/dataGridClasses/DataGridColumn.as  | 11 +++++++++++
 5 files changed, 39 insertions(+), 21 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 3c00199..302a38a 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -187,7 +187,7 @@ DataGrid
 {
 	IChangePropagator: ClassReference("org.apache.royale.html.beads.DataGridColumnChangePropagator");
 	IDataGridPresentationModel: ClassReference("org.apache.royale.html.beads.models.DataGridPresentationModel");
-	IBeadView: ClassReference("org.apache.royale.html.beads.DataGridView");
+	IBeadView: ClassReference("mx.controls.beads.DataGridView");
 	IBeadModel: ClassReference("org.apache.royale.html.beads.models.DataGridModel");
 	IBeadLayout: ClassReference("mx.controls.beads.layouts.DataGridLayout");
 	columnClass: ClassReference("mx.controls.dataGridClasses.DataGridColumnList");
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
index 1a40e5c..0cfeb0a 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
@@ -311,15 +311,6 @@ public class AdvancedDataGridColumn extends DataGridColumn
      */
    // private var hasFontContextBeenSaved:Boolean = false;
     
-    /**
-     *  @private
-     *  The zero-based index of this column as it is displayed in the grid.
-     *  It is not related to the structure of the data being displayed.
-     *  In MXML, the default order of the columns is the order of the
-     *  <code>mx:AdvancedDataGridColumn</code> tags.
-     */
-    mx_internal var colNum:Number;
-    
     // preferred width is the number we should use when measuring
     // regular width will be changed if we shrink columns to fit.
    // mx_internal var preferredWidth:Number = 100;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
index 3d79972..5074bcb 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
@@ -58,6 +58,7 @@ package mx.controls.beads
          */
 		public function AdvancedDataGridView()
 		{
+            columnClass = AdvancedDataGridColumn;
         }
 
         override protected function handleInitComplete(event:Event):void
@@ -73,6 +74,20 @@ package mx.controls.beads
             IEventDispatcher(host).addEventListener("columnsInvalid", handleColumnsInvalid);
             handleColumnsInvalid(null);
         }		
+        
+        override protected function handleCollectionChanged(event:Event):void
+        {
+            if (columnLists == null) return;
+            
+            for (var i:int=0; i < columnLists.length; i++)
+            {
+                var list:AdvancedDataGridColumnList = columnLists[i] as AdvancedDataGridColumnList;
+                list.adg = _strand as AdvancedDataGrid;
+                list.model.dispatchEvent(new Event("dataProviderChanged"));
+            }
+            host.dispatchEvent(new Event("layoutNeeded"));
+            
+        }
 
         private function handleColumnsInvalid(event:Event):void
         {
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
index 5a20ad1..ca2bb57 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
@@ -21,9 +21,9 @@ package mx.controls.beads
     import mx.collections.CursorBookmark;
     import mx.collections.ICollectionView;
     import mx.collections.IViewCursor;
-    import mx.controls.AdvancedDataGrid;
-    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
-    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnList;
+    import mx.controls.dataGridClasses.DataGridColumn;
+    import mx.controls.dataGridClasses.DataGridColumnList;
+    import mx.core.UIComponent;
     import mx.core.mx_internal;
     import mx.events.CollectionEvent;
     import mx.utils.ObjectUtil;
@@ -61,6 +61,8 @@ package mx.controls.beads
 		{
         }
 
+        protected var columnClass:Class = DataGridColumn;
+        
         public var visibleColumns:Array = [];
         
         override protected function handleInitComplete(event:Event):void
@@ -86,14 +88,13 @@ package mx.controls.beads
             }
         }		
         
-        private function handleCollectionChanged(event:Event):void
+        protected function handleCollectionChanged(event:Event):void
         {
             if (columnLists == null) return;
             
             for (var i:int=0; i < columnLists.length; i++)
             {
-                var list:AdvancedDataGridColumnList = columnLists[i] as AdvancedDataGridColumnList;
-                list.adg = _strand as AdvancedDataGrid;
+                var list:DataGridColumnList = columnLists[i] as DataGridColumnList;
                 list.model.dispatchEvent(new Event("dataProviderChanged"));
             }
             host.dispatchEvent(new Event("layoutNeeded"));
@@ -128,7 +129,7 @@ package mx.controls.beads
             var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
             if (sharedModel.dataProvider.length > 0)
             {
-                var col:AdvancedDataGridColumn;
+                var col:DataGridColumn;
                 var newCols:Array = [];
                 var cols:Array;
                 if (sharedModel.dataProvider)
@@ -165,10 +166,10 @@ package mx.controls.beads
                     {
                         if (p != "uid")
                         {
-                            col = new AdvancedDataGridColumn();
+                            col = new columnClass() as DataGridColumn;
                             col.dataField = p;
                             newCols.push(col);
-                            col.owner = _strand as AdvancedDataGrid;
+                            col.owner = _strand as UIComponent;
                             col.colNum = index++;
                         }
                     }
@@ -183,9 +184,9 @@ package mx.controls.beads
                         colName = cols[i];
                         if (colName is QName)
                             colName = QName(colName).localName;
-                        col = new AdvancedDataGridColumn();
+                        col = new columnClass() as DataGridColumn;
                         col.dataField = String(colName);
-                        col.owner = _strand as AdvancedDataGrid;
+                        col.owner = _strand as UIComponent;
                         col.colNum = i;
                         newCols.push(col);
                     }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
index ce5bf77..fd6f4a5 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
@@ -402,6 +402,17 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
     public var sortDescending:Boolean = false;
     
     mx_internal var owner:UIComponent;
+    
+    /**
+     *  @private
+     *  The zero-based index of this column as it is displayed in the grid.
+     *  It is not related to the structure of the data being displayed.
+     *  In MXML, the default order of the columns is the order of the
+     *  <code>mx:DataGridColumn</code> tags.
+     */
+    mx_internal var colNum:Number;
+    
+
 }
 
 }