This is an automated email from the ASF dual-hosted git repository.
carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new c8321cb jewel-datagrid: implement datagridcolumn labels change (fix
first point in #729)
c8321cb is described below
commit c8321cbc01c7d6362bc6447d3f0ea56ab1d116ec
Author: Carlos Rovira <[email protected]>
AuthorDate: Tue Feb 25 20:58:30 2020 +0100
jewel-datagrid: implement datagridcolumn labels change (fix first point in
#729)
---
.../Jewel/src/main/resources/jewel-manifest.xml | 3 +
.../royale/org/apache/royale/jewel/DataGrid.as | 1 +
.../datagrid/DataGridColumnLabelsChange.as | 95 ++++++++++++++++++++++
.../beads/models/DataGridPresentationModel.as | 26 +++---
.../royale/jewel/beads/views/DataGridView.as | 2 +-
.../datagrid/IDataGridPresentationModel.as | 4 +-
6 files changed, 116 insertions(+), 15 deletions(-)
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index dba8835..a0d9a56 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -48,6 +48,9 @@
<component id="DataGridColumnList"
class="org.apache.royale.jewel.supportClasses.datagrid.DataGridColumnList"/>
<component id="DataGridListArea"
class="org.apache.royale.jewel.supportClasses.datagrid.DataGridListArea"/>
<component id="DataGridButtonBar"
class="org.apache.royale.jewel.supportClasses.datagrid.DataGridButtonBar"/>
+
+ <component id="DataGridColumnLabelsChange"
class="org.apache.royale.jewel.beads.controls.datagrid.DataGridColumnLabelsChange"/>
+
<component id="ButtonBarItemRenderer"
class="org.apache.royale.jewel.itemRenderers.ButtonBarItemRenderer"/>
<component id="IconButtonBarItemRenderer"
class="org.apache.royale.jewel.itemRenderers.IconButtonBarItemRenderer"/>
<component id="ToggleButtonBarItemRenderer"
class="org.apache.royale.jewel.itemRenderers.ToggleButtonBarItemRenderer"/>
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
index 13e376a..67bc229 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
@@ -65,6 +65,7 @@ package org.apache.royale.jewel
typeNames = "jewel datagrid";
}
+ [Bindable("columnsChanged")]
/**
* The array of
org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn used to
* describe each column.
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridColumnLabelsChange.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridColumnLabelsChange.as
new file mode 100644
index 0000000..e42b960
--- /dev/null
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridColumnLabelsChange.as
@@ -0,0 +1,95 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.jewel.beads.controls.datagrid
+{
+ import org.apache.royale.collections.ArrayList;
+ import org.apache.royale.core.Bead;
+ import org.apache.royale.core.IDataGridModel;
+ import org.apache.royale.core.IStrand;
+ import org.apache.royale.jewel.DataGrid;
+ import org.apache.royale.jewel.beads.views.DataGridView;
+ import
org.apache.royale.jewel.supportClasses.datagrid.DataGridButtonBar;
+ import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
+ import
org.apache.royale.jewel.supportClasses.datagrid.IDataGridPresentationModel;
+
+ /**
+ * The DataGridColumnLabelsChange bead class is a specialty bead that
can be use with a Jewel DataGrid control
+ * when need to change column labels at runtime.
+ *
+ * Users can change labels throught datagrid presentation model
"columnLabels" Array
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ public class DataGridColumnLabelsChange extends Bead
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ public function DataGridColumnLabelsChange()
+ {
+ }
+
+ /**
+ * @copy org.apache.royale.core.IBead#strand
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9
+ * @royaleignorecoercion HTMLInputElement
+ * @royaleignorecoercion org.apache.royale.core.UIBase;
+ */
+ override public function set strand(value:IStrand):void
+ {
+ _strand = value;
+ listenOnStrand("columnLabelsChanged",
columnLabelsChangedHandler);
+ }
+
+ /**
+ * Iterate the columns array and change each column's label
with the corresponding string
+ * in the presentation model columnLabels Array.
+ *
+ * @param event
+ */
+ protected function columnLabelsChangedHandler(event:Event):void
+ {
+ var _dg:DataGrid = _strand as DataGrid;
+ var _sharedModel:IDataGridModel = _dg.model as
IDataGridModel;
+ var _presentationModel:IDataGridPresentationModel =
_dg.presentationModel as IDataGridPresentationModel;
+ var _header:DataGridButtonBar = (_dg.view as DataGridView).header
as DataGridButtonBar;
+
+ var dp:Array = _sharedModel.columns as Array;
+ var len:int = dp.length;
+ for (var index:int = 0; index < len; index++)
+ {
+ var column:IDataGridColumn = dp[index] as IDataGridColumn;
+ column.label = _presentationModel.columnLabels[index];
+ }
+ _header.dataProvider = new ArrayList(_sharedModel.columns);
+ }
+ }
+}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as
index 3acf675..450ed0d 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DataGridPresentationModel.as
@@ -19,6 +19,7 @@
package org.apache.royale.jewel.beads.models
{
import org.apache.royale.events.Event;
+ import org.apache.royale.events.IEventDispatcher;
import
org.apache.royale.jewel.supportClasses.datagrid.IDataGridPresentationModel;
/**
@@ -46,7 +47,7 @@ package org.apache.royale.jewel.beads.models
super();
}
- // private var _columnLabels:Array;
+ private var _columnLabels:Array;
/**
* The labels used in each column header.
*
@@ -55,17 +56,18 @@ package org.apache.royale.jewel.beads.models
* @playerversion AIR 2.6
* @productversion Royale 0.9.7
*/
- // public function get columnLabels():Array
- // {
- // return _columnLabels;
- // }
- // public function set columnLabels(value:Array):void
- // {
- // if (value != _columnLabels) {
- // _columnLabels = value;
- // dispatchEvent(new Event("columnLabelsChanged"));
- // }
- // }
+ public function get columnLabels():Array
+ {
+ return _columnLabels;
+ }
+ public function set columnLabels(value:Array):void
+ {
+ if (value != _columnLabels) {
+ _columnLabels = value;
+ if(_strand)
+ (_strand as
IEventDispatcher).dispatchEvent(new Event("columnLabelsChanged"));
+ }
+ }
// private var _columnLabelAlign:String = "left"
/**
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
index a801c59..0ac56c0 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
@@ -88,9 +88,9 @@ package org.apache.royale.jewel.beads.views
super.strand = value;
_dg = _strand as IDataGrid;
+ _presentationModel = _dg.presentationModel as
IDataGridPresentationModel;
_dg.addEventListener("widthChanged", handleSizeChanges);
_dg.addEventListener("heightChanged", handleSizeChanges);
- _presentationModel = _dg.presentationModel as
IDataGridPresentationModel;
// see if there is a presentation model already in place. if not,
add one.
_sharedModel = _dg.model as IDataGridModel;
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGridPresentationModel.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGridPresentationModel.as
index ae8af66..f5e5939 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGridPresentationModel.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGridPresentationModel.as
@@ -39,8 +39,8 @@ package org.apache.royale.jewel.supportClasses.datagrid
* @playerversion AIR 2.6
* @productversion Royale 0.9.7
*/
- // function get columnLabels():Array;
- // function set columnLabels(value:Array):void;
+ function get columnLabels():Array;
+ function set columnLabels(value:Array):void;
/**
* How column label aligns in the header