You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2019/12/12 23:47:38 UTC
[royale-asjs] 37/42: jewel-datagrid: add rollover behaviour to
affect all columns lists in the datagrid to show hovered state
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
commit 4448a7bc9498d3507906303ddc046321b33626b5
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Sat Dec 7 20:54:00 2019 +0100
jewel-datagrid: add rollover behaviour to affect all columns lists in the datagrid to show hovered state
---
.../org/apache/royale/core/IDataGridModel.as | 2 +-
.../royale/org/apache/royale/jewel/DataGrid.as | 67 ++++++++++++++++++----
.../royale/jewel/beads/views/DataGridView.as | 35 ++++++++---
.../supportClasses/datagrid/DataGridColumnList.as | 2 +-
.../supportClasses/datagrid/IDataGridColumnList.as | 36 ++++++++++++
5 files changed, 122 insertions(+), 20 deletions(-)
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IDataGridModel.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IDataGridModel.as
index c66d1d6..4ea8eb5 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IDataGridModel.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IDataGridModel.as
@@ -28,7 +28,7 @@ package org.apache.royale.core
* @playerversion AIR 2.6
* @productversion Royale 0.0
*/
- public interface IDataGridModel extends ISelectionModel
+ public interface IDataGridModel extends ISelectionModel, IRollOverModel
{
/**
* The set of DataGridColumns.
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 d975d56..43682ea 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
@@ -29,9 +29,9 @@ package org.apache.royale.jewel
/**
* The DataGrid class displays a collection of data using columns and rows. Each
* column represents a specific field in the data set; each row represents a specific
- * datum. The DataGrid is a composite component built with a org.apache.royale.html.ButtonBar
- * for the column headers and a org.apache.royale.html.List for each column. The DataGrid's
- * view bead (usually org.apache.royale.html.beads.DataGridView) constructs these parts while
+ * datum. The DataGrid is a composite component built with a org.apache.royale.jewel.ButtonBar
+ * for the column headers and a org.apache.royale.jewel.List for each column. The DataGrid's
+ * view bead (usually org.apache.royale.jewel.beads.views.DataGridView) constructs these parts while
* itemRenderer factories contruct the elements to display the data in each cell.
*
* @toplevel
@@ -58,13 +58,13 @@ package org.apache.royale.jewel
}
/**
- * The array of org.apache.royale.html.supportClasses.DataGridColumns used to
+ * The array of org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn used to
* describe each column.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.9
+ * @productversion Royale 0.9.7
* @royaleignorecoercion org.apache.royale.core.IDataGridModel
*/
public function get columns():Array
@@ -80,12 +80,12 @@ package org.apache.royale.jewel
}
/**
- * The object used to provide data to the org.apache.royale.html.DataGrid.
+ * The object used to provide data to the org.apache.royale.jewel.DataGrid.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.9
+ * @productversion Royale 0.9.7
* @royaleignorecoercion org.apache.royale.core.IDataGridModel
*/
public function get dataProvider():Object
@@ -106,10 +106,10 @@ package org.apache.royale.jewel
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.9
+ * @productversion Royale 0.9.7
* @royaleignorecoercion org.apache.royale.core.IDataGridModel
*/
- [Bindable("change")]
+ [Bindable("selectionChanged")]
public function get selectedIndex():int
{
return IDataGridModel(model).selectedIndex;
@@ -121,8 +121,53 @@ package org.apache.royale.jewel
{
IDataGridModel(model).selectedIndex = value;
}
+
+ [Bindable("rollOverIndexChanged")]
+ /**
+ * The index of the item currently below the pointer.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+ */
+ public function get rollOverIndex():int
+ {
+ return IDataGridModel(model).rollOverIndex;
+ }
+ /**
+ * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+ */
+ public function set rollOverIndex(value:int):void
+ {
+ IDataGridModel(model).rollOverIndex = value;
+ }
/**
+ * The item currently selected. Changing this value also
+ * changes the selectedIndex property.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+ */
+ [Bindable("selectionChanged")]
+ public function get selectedItem():Object
+ {
+ return IDataGridModel(model).selectedItem;
+ }
+ /**
+ * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+ */
+ public function set selectedItem(value:Object):void
+ {
+ IDataGridModel(model).selectedItem = value;
+ }
+
+ /**
* @private
*/
private var _presentationModel:IDataGridPresentationModel;
@@ -133,7 +178,7 @@ package org.apache.royale.jewel
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.9
+ * @productversion Royale 0.9.7
* @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
* @royaleignorecoercion org.apache.royale.core.IBead
*/
@@ -163,7 +208,7 @@ package org.apache.royale.jewel
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.9
+ * @productversion Royale 0.9.7
* @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
*/
public function get rowHeight():Number
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 45b29b7..93cffd8 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
@@ -35,11 +35,11 @@ package org.apache.royale.jewel.beads.views
import org.apache.royale.html.beads.GroupView;
import org.apache.royale.html.beads.IDataGridView;
import org.apache.royale.html.beads.layouts.ButtonBarLayout;
- import org.apache.royale.html.supportClasses.IDataGridColumnList;
import org.apache.royale.jewel.supportClasses.Viewport;
import org.apache.royale.jewel.supportClasses.datagrid.DataGridButtonBar;
import org.apache.royale.jewel.supportClasses.datagrid.IDataGrid;
import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
+ import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
/**
* The DataGridView class is the visual bead for the org.apache.royale.jewel.DataGrid.
@@ -105,13 +105,12 @@ package org.apache.royale.jewel.beads.views
/**
* @private
* @royaleignorecoercion org.apache.royale.core.IDataGridModel
- * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
* @royaleignorecoercion org.apache.royale.core.IBead
* @royaleignorecoercion org.apache.royale.core.IBeadModel
* @royaleignorecoercion org.apache.royale.core.IChild
* @royaleignorecoercion org.apache.royale.core.ILayoutChild
* @royaleignorecoercion org.apache.royale.core.IUIBase
- * @royaleignorecoercion org.apache.royale.html.DataGrid
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
*/
override protected function handleInitComplete(event:Event):void
{
@@ -168,6 +167,8 @@ package org.apache.royale.jewel.beads.views
/**
* @private
+ * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+ * @royaleignorecoercion org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList
*/
protected function handleDataProviderChanged(event:Event):void
{
@@ -183,7 +184,7 @@ package org.apache.royale.jewel.beads.views
/**
* @private
* @royaleignorecoercion org.apache.royale.core.IDataGridModel
- * @royaleignorecoercion org.apache.royale.html.supportClasses.IDataGridColumnList
+ * @royaleignorecoercion org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList
*/
private function handleSelectedIndexChanged(event:Event):void
{
@@ -200,7 +201,7 @@ package org.apache.royale.jewel.beads.views
/**
* @private
* @royaleignorecoercion org.apache.royale.core.IDataGridModel
- * @royaleignorecoercion org.apache.royale.html.supportClasses.IDataGridColumnList
+ * @royaleignorecoercion org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList
*/
private function handleColumnListChange(event:Event):void
{
@@ -217,10 +218,29 @@ package org.apache.royale.jewel.beads.views
host.dispatchEvent(new Event('change'));
}
+ /**
+ * @private
+ * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+ * @royaleignorecoercion org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList
+ */
+ private function handleColumnListRollOverChange(event:Event):void
+ {
+ var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
+ var list:IDataGridColumnList = event.target as IDataGridColumnList;
+ sharedModel.rollOverIndex = list.rollOverIndex;
+
+ for(var i:int=0; i < _lists.length; i++) {
+ if (list != _lists[i]) {
+ var otherList:IDataGridColumnList = _lists[i] as IDataGridColumnList;
+ otherList.rollOverIndex = list.rollOverIndex;
+ }
+ }
+
+ host.dispatchEvent(new Event('rollOverIndex'));
+ }
/**
* @private
- * @royaleignorecoercion String
* @royaleignorecoercion Class
* @royaleignorecoercion org.apache.royale.core.IDataGridModel
* @royaleignorecoercion org.apache.royale.core.IBead
@@ -266,7 +286,8 @@ package org.apache.royale.jewel.beads.views
list.dataProvider = sharedModel.dataProvider;
list.itemRenderer = dataGridColumn.itemRenderer;
list.labelField = dataGridColumn.dataField;
- list.addEventListener('change', handleColumnListChange);
+ list.addEventListener('rollOverIndexChanged', handleColumnListRollOverChange);
+ list.addEventListener('selectionChanged', handleColumnListChange);
list.addBead(presentationModel as IBead);
(_listArea as IParent).addElement(list as IChild);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
index 2c04991..7b82a0c 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
@@ -19,7 +19,7 @@
package org.apache.royale.jewel.supportClasses.datagrid
{
import org.apache.royale.jewel.List;
- import org.apache.royale.html.supportClasses.IDataGridColumnList;
+ import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
//--------------------------------------
// Events
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGridColumnList.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGridColumnList.as
new file mode 100644
index 0000000..2de9e35
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/IDataGridColumnList.as
@@ -0,0 +1,36 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 "Licens"); 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.supportClasses.datagrid
+{
+ import org.apache.royale.html.supportClasses.IDataGridColumnList;
+
+ /**
+ * The Jewel IDataGridColumnList interface is a marker interface for Jewel DataGrid Column Lists
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ public interface IDataGridColumnList extends org.apache.royale.html.supportClasses.IDataGridColumnList
+ {
+ function get rollOverIndex():int;
+ function set rollOverIndex(value:int):void;
+ }
+}
\ No newline at end of file