This is my first real contribution to the FlexJS project. Alex/Peter can you please review this and let me know if I am on the right track? Once you approve, I will start looking at the JS version of the same logic.
Thanks, Om On Tue, Nov 12, 2013 at 6:07 PM, <bigosma...@apache.org> wrote: > Updated Branches: > refs/heads/develop 22f891823 -> 67c11796e > > > Add functionality to AS version of DataGrid to highlight entire row when > rolling over any column > JS version to follow after discussion on dev@f.a.o > > > Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo > Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/67c11796 > Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/67c11796 > Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/67c11796 > > Branch: refs/heads/develop > Commit: 67c11796e271bf7811e8afb12f556aa2386d2960 > Parents: 22f8918 > Author: Om <bigosma...@gmail.com> > Authored: Tue Nov 12 18:05:48 2013 -0800 > Committer: Om <bigosma...@gmail.com> > Committed: Tue Nov 12 18:06:26 2013 -0800 > > ---------------------------------------------------------------------- > .../src/org/apache/flex/core/IRollOverModel.as | 28 ++++++++++++++++++++ > .../org/apache/flex/html/staticControls/List.as | 12 ++++++++- > .../html/staticControls/beads/DataGridView.as | 13 +++++++++ > .../flex/html/staticControls/beads/ListView.as | 19 +++++++++++++ > .../controllers/ItemRendererMouseController.as | 1 + > .../ListSingleSelectionMouseController.as | 10 ++++++- > .../beads/models/ArraySelectionModel.as | 14 +++++++++- > 7 files changed, 94 insertions(+), 3 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/67c11796/frameworks/as/src/org/apache/flex/core/IRollOverModel.as > ---------------------------------------------------------------------- > diff --git a/frameworks/as/src/org/apache/flex/core/IRollOverModel.as > b/frameworks/as/src/org/apache/flex/core/IRollOverModel.as > new file mode 100644 > index 0000000..d38aa41 > --- /dev/null > +++ b/frameworks/as/src/org/apache/flex/core/IRollOverModel.as > @@ -0,0 +1,28 @@ > > +//////////////////////////////////////////////////////////////////////////////// > +// > +// 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.flex.core > +{ > + import org.apache.flex.events.IEventDispatcher; > + > + public interface IRollOverModel extends IEventDispatcher, > IBeadModel > + { > + function get rollOverIndex():int; > + function set rollOverIndex(value:int):void; > + } > +} > \ No newline at end of file > > > http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/67c11796/frameworks/as/src/org/apache/flex/html/staticControls/List.as > ---------------------------------------------------------------------- > diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/List.as > b/frameworks/as/src/org/apache/flex/html/staticControls/List.as > index 7cb3b6d..da1638e 100644 > --- a/frameworks/as/src/org/apache/flex/html/staticControls/List.as > +++ b/frameworks/as/src/org/apache/flex/html/staticControls/List.as > @@ -18,8 +18,9 @@ > > > //////////////////////////////////////////////////////////////////////////////// > package org.apache.flex.html.staticControls > { > + import org.apache.flex.core.IRollOverModel; > import org.apache.flex.core.ISelectionModel; > - import org.apache.flex.core.UIBase; > + import org.apache.flex.core.UIBase; > import org.apache.flex.core.ValuesManager; > import > org.apache.flex.html.staticControls.beads.IDataProviderItemRendererMapper; > > @@ -56,6 +57,15 @@ package org.apache.flex.html.staticControls > { > ISelectionModel(model).selectedIndex = value; > } > + > + public function get rollOverIndex():int > + { > + return IRollOverModel(model).rollOverIndex; > + } > + public function set rollOverIndex(value:int):void > + { > + IRollOverModel(model).rollOverIndex = value; > + } > > public function get selectedItem():Object > { > > > http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/67c11796/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataGridView.as > ---------------------------------------------------------------------- > diff --git > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataGridView.as > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataGridView.as > index 4088734..f2d3cc2 100644 > --- > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataGridView.as > +++ > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataGridView.as > @@ -85,6 +85,7 @@ package org.apache.flex.html.staticControls.beads > columns.push(column); > > > column.addEventListener('change',columnListChangeHandler); > + > column.addEventListener('rollover',columnListRollOverHandler); > } > > > IEventDispatcher(_strand).addEventListener("widthChanged",handleSizeChange); > @@ -139,5 +140,17 @@ package org.apache.flex.html.staticControls.beads > > IEventDispatcher(_strand).dispatchEvent(new > Event('change')); > } > + > + private function > columnListRollOverHandler(event:Event):void > + { > + var list:List = event.target as List; > + for(var i:int=0; i < columns.length; i++) { > + if (list != columns[i]) { > + columns[i].rollOverIndex = > list.rollOverIndex; > + } > + } > + > + IEventDispatcher(_strand).dispatchEvent(new > Event('rollOver')); > + } > } > } > \ No newline at end of file > > > http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/67c11796/frameworks/as/src/org/apache/flex/html/staticControls/beads/ListView.as > ---------------------------------------------------------------------- > diff --git > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/ListView.as > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/ListView.as > index dbe9e36..b8c9ab9 100644 > --- > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/ListView.as > +++ > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/ListView.as > @@ -27,6 +27,7 @@ package org.apache.flex.html.staticControls.beads > import org.apache.flex.core.IItemRendererParent; > import org.apache.flex.core.ILayoutParent; > import org.apache.flex.core.IParent; > + import org.apache.flex.core.IRollOverModel; > import org.apache.flex.core.ISelectionModel; > import org.apache.flex.core.IStrand; > import org.apache.flex.core.Strand; > @@ -96,6 +97,7 @@ package org.apache.flex.html.staticControls.beads > > listModel = value.getBeadByType(ISelectionModel) as > ISelectionModel; > listModel.addEventListener("selectedIndexChanged", > selectionChangeHandler); > + listModel.addEventListener("rollOverIndexChanged", > rollOverIndexChangeHandler); > > _border = new Border(); > _border.model = new SingleLineBorderModel(); > @@ -128,6 +130,23 @@ package org.apache.flex.html.staticControls.beads > } > lastSelectedIndex = listModel.selectedIndex; > } > + > + private var lastRollOverIndex:int = -1; > + > + private function > rollOverIndexChangeHandler(event:Event):void > + { > + if (lastRollOverIndex != -1) > + { > + var ir:IItemRenderer = > dataGroup.getItemRendererForIndex(lastRollOverIndex) as IItemRenderer; > + ir.hovered = false; > + } > + if (IRollOverModel(listModel).rollOverIndex != -1) > + { > + ir = > dataGroup.getItemRendererForIndex(IRollOverModel(listModel).rollOverIndex); > + ir.hovered = true; > + } > + lastRollOverIndex = > IRollOverModel(listModel).rollOverIndex; > + } > > private function createScrollBar():ScrollBar > { > > > http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/67c11796/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ItemRendererMouseController.as > ---------------------------------------------------------------------- > diff --git > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ItemRendererMouseController.as > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ItemRendererMouseController.as > index 87d9a58..fbc0b1c 100644 > --- > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ItemRendererMouseController.as > +++ > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ItemRendererMouseController.as > @@ -49,6 +49,7 @@ package > org.apache.flex.html.staticControls.beads.controllers > if (target) > { > target.hovered = true; > + target.dispatchEvent(new > Event("rollover")); > } > } > > > > http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/67c11796/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ListSingleSelectionMouseController.as > ---------------------------------------------------------------------- > diff --git > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ListSingleSelectionMouseController.as > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ListSingleSelectionMouseController.as > index dc69476..ea870ab 100644 > --- > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ListSingleSelectionMouseController.as > +++ > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/controllers/ListSingleSelectionMouseController.as > @@ -21,11 +21,12 @@ package > org.apache.flex.html.staticControls.beads.controllers > import org.apache.flex.core.IBeadController; > import org.apache.flex.core.IItemRenderer; > import org.apache.flex.core.IItemRendererParent; > + import org.apache.flex.core.IRollOverModel; > import org.apache.flex.core.ISelectionModel; > import org.apache.flex.core.IStrand; > - import org.apache.flex.html.staticControls.beads.IListView; > import org.apache.flex.events.Event; > import org.apache.flex.events.IEventDispatcher; > + import org.apache.flex.html.staticControls.beads.IListView; > > > public class ListSingleSelectionMouseController implements > IBeadController > @@ -47,6 +48,7 @@ package > org.apache.flex.html.staticControls.beads.controllers > listView = value.getBeadByType(IListView) as > IListView; > dataGroup = listView.dataGroup; > dataGroup.addEventListener("selected", selectedHandler, true); > + dataGroup.addEventListener("rollover", rolloverHandler, true); > } > > private function selectedHandler(event:Event):void > @@ -54,6 +56,12 @@ package > org.apache.flex.html.staticControls.beads.controllers > listModel.selectedIndex = IItemRenderer(event.target).index; > IEventDispatcher(listView.strand).dispatchEvent(new > Event("change")); > } > + > + private function rolloverHandler(event:Event):void > + { > + IRollOverModel(listModel).rollOverIndex = > IItemRenderer(event.target).index; > + IEventDispatcher(listView.strand).dispatchEvent(new > Event("rollover")); > + } > > } > } > \ No newline at end of file > > > http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/67c11796/frameworks/as/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as > ---------------------------------------------------------------------- > diff --git > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as > index 3ca7f94..d1794be 100644 > --- > a/frameworks/as/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as > +++ > b/frameworks/as/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as > @@ -18,12 +18,13 @@ > > > //////////////////////////////////////////////////////////////////////////////// > package org.apache.flex.html.staticControls.beads.models > { > + import org.apache.flex.core.IRollOverModel; > import org.apache.flex.core.ISelectionModel; > import org.apache.flex.core.IStrand; > import org.apache.flex.events.Event; > import org.apache.flex.events.EventDispatcher; > > - public class ArraySelectionModel extends EventDispatcher > implements ISelectionModel > + public class ArraySelectionModel extends EventDispatcher > implements ISelectionModel, IRollOverModel > { > public function ArraySelectionModel() > { > @@ -49,6 +50,7 @@ package org.apache.flex.html.staticControls.beads.models > } > > private var _selectedIndex:int = -1; > + private var _rollOverIndex:int = -1; > > public function get selectedIndex():int > { > @@ -61,6 +63,16 @@ package org.apache.flex.html.staticControls.beads.models > dispatchEvent(new Event("selectedIndexChanged")); > } > > + public function get rollOverIndex():int > + { > + return _rollOverIndex; > + } > + public function set rollOverIndex(value:int):void > + { > + _rollOverIndex = value; > + dispatchEvent(new Event("rollOverIndexChanged")); > + } > + > private var _selectedItem:Object; > > public function get selectedItem():Object > >