You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2018/11/08 09:06:58 UTC
[royale-asjs] branch develop updated: Tuning to the model hierarchy
for List/Combo/DropDown - aiming for consistent behaviour
This is an automated email from the ASF dual-hosted git repository.
gregdove 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 1a175e8 Tuning to the model hierarchy for List/Combo/DropDown - aiming for consistent behaviour
1a175e8 is described below
commit 1a175e88be91a6ee2a4e6d8dd13167c1cb621456
Author: greg-dove <gr...@gmail.com>
AuthorDate: Thu Nov 8 22:06:34 2018 +1300
Tuning to the model hierarchy for List/Combo/DropDown - aiming for consistent behaviour
---
.../src/main/royale/ComboBoxPlayGround.mxml | 35 +++---
.../src/main/royale/ListPlayGround.mxml | 12 +-
.../royale/org/apache/royale/jewel/ComboBox.as | 41 ++++--
.../royale/org/apache/royale/jewel/DropDownList.as | 4 +-
.../main/royale/org/apache/royale/jewel/List.as | 24 ++++
.../jewel/beads/models/ArrayListSelectionModel.as | 97 ++++++++++----
.../royale/jewel/beads/models/DropDownListModel.as | 140 ---------------------
.../jewel/beads/models/IDropDownListModel.as | 2 +-
...ropDownListModel.as => IJewelSelectionModel.as} | 11 +-
9 files changed, 164 insertions(+), 202 deletions(-)
diff --git a/examples/royale/JewelExample/src/main/royale/ComboBoxPlayGround.mxml b/examples/royale/JewelExample/src/main/royale/ComboBoxPlayGround.mxml
index bb45b22..0983454 100644
--- a/examples/royale/JewelExample/src/main/royale/ComboBoxPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/ComboBoxPlayGround.mxml
@@ -22,19 +22,19 @@ limitations under the License.
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:models="models.*">
-
+
<fx:Script>
<![CDATA[
import vos.IconListVO;
import org.apache.royale.collections.ArrayList;
- private function watchmenComboBoxSelectedItem(event:Event):void {
+ /* private function watchmenComboBoxSelectedItem(event:Event):void {
watchmenComboBoxResult.html = "<strong>ComboBox selectedItem:</strong> " + event.target.selectedItem;
- }
-
- private function avengersComboBoxSelectedItem(event:Event):void {
+ }*/
+
+ /*private function avengersComboBoxSelectedItem(event:Event):void {
avengersComboBoxResult.html = "<strong>ComboBox selectedItem:</strong> " + event.target.selectedItem.label;
- }
+ }*/
private function onValueChange(event:Event):void
{
@@ -47,7 +47,7 @@ limitations under the License.
}
private function describeItem(item:*):String {
- const intro:String = "<strong>DropDownList selectedItem:</strong> ";
+ const intro:String = "<strong>ComboBox selectedItem:</strong> ";
var evaluated:String;
if (item is String) {
evaluated = 'String value: \'' + item + '\'';
@@ -75,9 +75,9 @@ limitations under the License.
<j:model>
<models:ListsModel id="listModel"/>
</j:model>
-
+
<j:Grid gap="true" itemsVerticalAlign="itemsSameHeight">
-
+
<j:GridCell desktopNumerator="1" desktopDenominator="1"
tabletNumerator="1" tabletDenominator="1"
phoneNumerator="1" phoneDenominator="1">
@@ -90,7 +90,7 @@ limitations under the License.
tabletNumerator="1" tabletDenominator="3"
phoneNumerator="1" phoneDenominator="1"
itemsVerticalAlign="itemsCentered" width="290">
- <j:ComboBox id="watchmenComboBox" dataProvider="{listModel.watchmen}" change="watchmenComboBoxSelectedItem(event)">
+ <j:ComboBox id="watchmenComboBox" dataProvider="{listModel.watchmen}">
<j:beads>
<j:ComboBoxTextPrompt prompt="Watchmen Team..."/>
</j:beads>
@@ -110,7 +110,7 @@ limitations under the License.
tabletNumerator="1" tabletDenominator="3"
phoneNumerator="1" phoneDenominator="1"
itemsVerticalAlign="itemsCentered" width="290">
- <j:Label id="watchmenComboBoxResult" html="<strong>ComboBox selectedItem:</strong> "/>
+ <j:Label id="watchmenComboBoxResult" html="{describeItem(watchmenComboBox.selectedItem)}"/>
</j:GridCell>
</j:Grid>
</j:Card>
@@ -127,7 +127,8 @@ limitations under the License.
tabletNumerator="1" tabletDenominator="3"
phoneNumerator="1" phoneDenominator="1"
itemsVerticalAlign="itemsCentered" width="290">
- <j:ComboBox id="avengersComboBox" width="140" labelField="label" dataProvider="{listModel.avengers}" change="avengersComboBoxSelectedItem(event)">
+ <j:ComboBox id="avengersComboBox" width="140" labelField="label"
+ dataProvider="{listModel.avengers}">
<j:beads>
<j:ComboBoxTextPrompt prompt="Avengers Team..."/>
</j:beads>
@@ -146,7 +147,7 @@ limitations under the License.
tabletNumerator="1" tabletDenominator="3"
phoneNumerator="1" phoneDenominator="1"
itemsVerticalAlign="itemsCentered" width="290">
- <j:Label id="avengersComboBoxResult" html="<strong>ComboBox selectedItem:</strong> "/>
+ <j:Label id="avengersComboBoxResult" html="{describeItem(avengersComboBox.selectedItem)}"/>
</j:GridCell>
</j:Grid>
</j:Card>
@@ -154,7 +155,7 @@ limitations under the License.
</j:Grid>
<j:Grid gap="true" itemsVerticalAlign="itemsSameHeight">
-
+
<j:GridCell desktopNumerator="1" desktopDenominator="1"
tabletNumerator="1" tabletDenominator="1"
phoneNumerator="1" phoneDenominator="1">
@@ -166,12 +167,12 @@ limitations under the License.
<j:ComboBox id="cmb" labelField="label" dataProvider="{listModel.avengers}"/>
<j:Label text="Width: {cmb.width}px"/>
</j:HGroup>
-
+
<j:Slider id="slider_w" width="250" value="200" minimum="100" maximum="400" valueChange="onValueChange(event)"/>
</j:Card>
</j:GridCell>
-
+
</j:Grid>
<j:Grid gap="true" itemsVerticalAlign="itemsSameHeight">
@@ -187,7 +188,7 @@ limitations under the License.
</j:Card>
</j:GridCell>
</j:Grid>
-
+
<j:Grid gap="true" itemsVerticalAlign="itemsSameHeight">
<j:GridCell desktopNumerator="1" desktopDenominator="1"
tabletNumerator="1" tabletDenominator="1"
diff --git a/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml b/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml
index c00692e..baad8a6 100644
--- a/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml
@@ -22,7 +22,7 @@ limitations under the License.
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:models="models.*">
-
+
<fx:Script>
<![CDATA[
import org.apache.royale.collections.ArrayList;
@@ -57,14 +57,14 @@ limitations under the License.
new IconListVO("Label", "label"),
new IconListVO("RadioButton", "radio_button_checked"),
new IconListVO("Text", "subject"),
- new IconListVO("TextInput", "text_fields")
+ new IconListVO("TextInput", "text_fields")
]);
}
private function addItem():void
{
var iconListVO:IconListVO = new IconListVO("New Item", MaterialIconType.CLOSE);
-
+
(iconList.dataProvider as ArrayList).addItem(iconListVO);
// listModel.iconListData.addItem(iconListVO); // to test things are adding to right place
}
@@ -91,7 +91,7 @@ limitations under the License.
}
private function describeItem(item:*):String {
- const intro:String = "<strong>DropDownList selectedItem:</strong> ";
+ const intro:String = "<strong>List selectedItem:</strong> ";
var evaluated:String;
if (item is String) {
evaluated = 'String value: \'' + item + '\'';
@@ -191,8 +191,8 @@ limitations under the License.
phoneNumerator="1" phoneDenominator="1">
<j:Card>
<html:H3 text="Jewel List (Horizontal)"/>
- <j:List id="alist" percentWidth="100" height="100">
- <j:beads>
+ <j:List id="alist" percentWidth="100" height="100">
+ <j:beads>
<j:HorizontalLayout itemsExpand="true" />
</j:beads>
<j:dataProvider>
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
index d639b3f..f9f704b 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
@@ -23,8 +23,11 @@ package org.apache.royale.jewel
import org.apache.royale.core.ISelectionModel;
import org.apache.royale.core.IDataProviderModel;
import org.apache.royale.core.IListPresentationModel;
+ import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
import org.apache.royale.jewel.beads.models.ListPresentationModel;
-
+ import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.events.Event;
+
//--------------------------------------
// Events
//--------------------------------------
@@ -39,18 +42,18 @@ package org.apache.royale.jewel
* @productversion Royale 0.9.4
*/
[Event(name="change", type="org.apache.royale.events.Event")]
-
+
/**
* The ComboBox class is a component that displays an input field and
* pop-up List with selections. Selecting an item from the pop-up List
* places that item into the input field of the ComboBox. The ComboBox
* uses the following bead types:
- *
+ *
* org.apache.royale.core.IBeadModel: the data model, which includes the dataProvider, selectedItem, and
* so forth.
* org.apache.royale.core.IBeadView: the bead that constructs the visual parts of the component.
* org.apache.royale.core.IBeadController: the bead that handles input and output.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -69,8 +72,9 @@ package org.apache.royale.jewel
public function ComboBox()
{
super();
-
+
typeNames = "jewel combobox";
+ addEventListener('beadsAdded', setupModelChangeListener);
}
/**
@@ -94,7 +98,7 @@ package org.apache.royale.jewel
{
IDataProviderModel(model).labelField = value;
}
-
+
/**
* The data for display by the ComboBox.
*
@@ -115,7 +119,7 @@ package org.apache.royale.jewel
{
IDataProviderModel(model).dataProvider = value;
}
-
+
[Bindable("change")]
/**
* The index of the currently selected item. Changing this item changes
@@ -138,7 +142,7 @@ package org.apache.royale.jewel
{
ISelectionModel(model).selectedIndex = value;
}
-
+
[Bindable("change")]
/**
* The item currently selected. Changing this value also
@@ -158,7 +162,7 @@ package org.apache.royale.jewel
{
ISelectionModel(model).selectedItem = value;
}
-
+
/**
* The presentation model for the list.
*
@@ -177,5 +181,24 @@ package org.apache.royale.jewel
}
return presModel;
}
+
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher;
+ * @royaleignorecoercion org.apache.royale.jewel.beads.models.IJewelSelectionModel;
+ */
+ private function setupModelChangeListener():void{
+ removeEventListener('beadsAdded', setupModelChangeListener);
+ IEventDispatcher(model).addEventListener('change', modelChangeDispatcher);
+ IJewelSelectionModel(model).dispatchChangeOnDataProviderChange = true;
+ }
+
+ private var respondingToProgrammaticChange:Boolean;
+
+ private function modelChangeDispatcher(event:Event):void{
+ //handles re-dispatching for programmatic changes
+ respondingToProgrammaticChange = true;
+ dispatchEvent(new Event("change"));
+ respondingToProgrammaticChange = false;
+ }
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as
index 393edd1..597fe4f 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as
@@ -316,13 +316,13 @@ package org.apache.royale.jewel
var ddModel:IDropDownListModel = model as IDropDownListModel;
if (ddModel) {
index -= ddModel.offset;
- ddModel.processingInteractiveChange = true;
+ ddModel.setProcessingInteractiveChange(true);
}
model.selectedIndex = index;
if (ddModel)
- ddModel.processingInteractiveChange = false;
+ ddModel.setProcessingInteractiveChange(false);
}
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/List.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/List.as
index a59e5ee..11091c7 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/List.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/List.as
@@ -24,6 +24,9 @@ package org.apache.royale.jewel
import org.apache.royale.core.IDataProviderModel;
import org.apache.royale.core.IListPresentationModel;
import org.apache.royale.jewel.beads.models.ListPresentationModel;
+ import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
+ import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.events.Event;
COMPILE::JS
{
@@ -82,6 +85,7 @@ package org.apache.royale.jewel
{
super();
typeNames = "jewel list";
+ addEventListener('initComplete', setupModelChangeListener);
}
/**
@@ -229,5 +233,25 @@ package org.apache.royale.jewel
}
return presModel;
}
+
+
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ * @royaleignorecoercion org.apache.royale.jewel.beads.models.IJewelSelectionModel
+ */
+ private function setupModelChangeListener(event:Event):void{
+ removeEventListener('initComplete', setupModelChangeListener);
+ IEventDispatcher(model).addEventListener('change', modelChangeDispatcher);
+ IJewelSelectionModel(model).dispatchChangeOnDataProviderChange = true;
+ }
+
+ private var respondingToProgrammaticChange:Boolean;
+
+ private function modelChangeDispatcher(event:Event):void{
+ //handles re-dispatching for programmatic changes
+ respondingToProgrammaticChange = true;
+ dispatchEvent(new Event("change"));
+ respondingToProgrammaticChange = false;
+ }
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
index 38f3696..a735000 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
@@ -35,7 +35,7 @@ package org.apache.royale.jewel.beads.models
* @playerversion AIR 2.6
* @productversion Royale 0.9.4
*/
- public class ArrayListSelectionModel extends EventDispatcher implements ISelectionModel, IRollOverModel
+ public class ArrayListSelectionModel extends EventDispatcher implements IJewelSelectionModel, IRollOverModel
{
/**
* Constructor.
@@ -49,6 +49,11 @@ package org.apache.royale.jewel.beads.models
{
}
+ private var _dispatchChangeOnDataChange:Boolean;
+ public function set dispatchChangeOnDataProviderChange(value:Boolean):void{
+ _dispatchChangeOnDataChange = true;
+ }
+
private var _strand:IStrand;
/**
@@ -64,6 +69,14 @@ package org.apache.royale.jewel.beads.models
_strand = value;
}
+ private var _processingInteractiveChange:Boolean = false;
+ public function setProcessingInteractiveChange(value:Boolean):void{
+ _processingInteractiveChange = value;
+ }
+ protected function get processingInteractiveChange():Boolean{
+ return _processingInteractiveChange;
+ }
+
private var _dataProvider:IArrayList;
[Bindable("dataProviderChanged")]
@@ -88,12 +101,39 @@ package org.apache.royale.jewel.beads.models
if (value == _dataProvider) return;
_dataProvider = value as IArrayList;
- if(!_dataProvider || _selectedIndex >= _dataProvider.length)
- _selectedIndex = -1;
-
- _selectedItem = _selectedIndex == -1 ? null : _dataProvider.getItemAt(_selectedIndex);
-
- dispatchEvent(new Event("dataProviderChanged"));
+ var itemChanged:Boolean;
+ const oldIndex:int = _selectedIndex;
+ if (_dataProvider) {
+ if (_selectedItem) {
+ _selectedIndex = _dataProvider.getItemIndex(_selectedItem);
+
+ if (_selectedIndex == -1) {
+ _selectedItem = null;
+ itemChanged = true;
+ }
+ } else {
+ if (_selectedIndex != -1) {
+ if (_selectedIndex < _dataProvider.length) {
+ _selectedItem = _dataProvider.getItemAt(_selectedIndex);
+ itemChanged = true;
+ } else {
+ _selectedIndex = -1;
+ }
+ }
+ }
+ } else {
+ itemChanged = _selectedItem != null;
+ _selectedItem = null;
+ _selectedIndex = -1;
+ }
+
+ dispatchEvent(new Event("dataProviderChanged"));
+ if (itemChanged)
+ dispatchEvent(new Event("selectedItemChanged"));
+ if (oldIndex != _selectedIndex)
+ dispatchEvent(new Event("selectedIndexChanged"));
+ if (_dispatchChangeOnDataChange && (itemChanged || oldIndex != _selectedIndex))
+ dispatchEvent(new Event("change"));
}
private var _selectedIndex:int = -1;
@@ -142,11 +182,26 @@ package org.apache.royale.jewel.beads.models
*/
public function set selectedIndex(value:int):void
{
+ if (!_dataProvider) {
+ _selectedIndex = value;
+ return;
+ }
if (value == _selectedIndex) return;
- _selectedIndex = value;
- _selectedItem = (value == -1 || _dataProvider == null) ? null : (value < _dataProvider.length) ? _dataProvider.getItemAt(value) : null;
- dispatchEvent(new Event("selectedIndexChanged"));
+ const oldItem:Object = _selectedItem;
+ _selectedIndex = value < _dataProvider.length ? value : _dataProvider.length - 1;
+ if (_selectedIndex != -1) {
+ _selectedItem = _dataProvider.getItemAt(_selectedIndex);
+ } else {
+ _selectedItem = null;
+ }
+
+ if ( oldItem != _selectedItem)
+ dispatchEvent(new Event("selectedItemChanged"));
+ dispatchEvent(new Event("selectedIndexChanged"));
+ if (!_processingInteractiveChange) {
+ dispatchEvent(new Event("change"));
+ }
}
/**
@@ -194,19 +249,17 @@ package org.apache.royale.jewel.beads.models
public function set selectedItem(value:Object):void
{
if (value == _selectedItem) return;
+ _selectedItem = value;
+ if (_dataProvider) {
+ const indexChanged:Boolean = _selectedIndex != (_selectedIndex = _dataProvider.getItemIndex(value));
- _selectedItem = value;
- var n:int = _dataProvider.length;
- for (var i:int = 0; i < n; i++)
- {
- if (_dataProvider.getItemAt(i) == value)
- {
- _selectedIndex = i;
- break;
- }
- }
- dispatchEvent(new Event("selectedItemChanged"));
- dispatchEvent(new Event("selectedIndexChanged"));
+ dispatchEvent(new Event("selectedItemChanged"));
+ if (indexChanged)
+ dispatchEvent(new Event("selectedIndexChanged"));
+ if (!_processingInteractiveChange) {
+ dispatchEvent(new Event("change"));
+ }
+ }
}
private var _selectedString:String;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DropDownListModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DropDownListModel.as
index d1b8d0f..bbb9422 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DropDownListModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DropDownListModel.as
@@ -18,8 +18,6 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.beads.models
{
- import org.apache.royale.collections.IArrayList;
- import org.apache.royale.events.Event;
/**
* The DropDownListModel class defines the data associated with an org.apache.royale.jewel.DropDownListModel
@@ -43,143 +41,5 @@ package org.apache.royale.jewel.beads.models
return _offset;
}
- private var _processingInteractiveChange:Boolean = false;
- public function set processingInteractiveChange(value:Boolean):void{
- _processingInteractiveChange = value;
- }
-
-
- private var _dataProvider:IArrayList;
-
- [Bindable("dataProviderChanged")]
- /**
- * @copy org.apache.royale.core.ISelectionModel#dataProvider
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- */
- override public function get dataProvider():Object
- {
- return _dataProvider;
- }
-
- /**
- * @private
- */
- override public function set dataProvider(value:Object):void
- {
- if (value == _dataProvider) return;
- _dataProvider = value as IArrayList;
- var itemChanged:Boolean;
- const oldIndex:int = _selectedIndex;
- if (_dataProvider) {
- if (_selectedItem) {
- _selectedIndex = _dataProvider.getItemIndex(_selectedItem);
-
- if (_selectedIndex == -1) {
- _selectedItem = null;
- itemChanged = true;
- }
- } else {
- if (_selectedIndex != -1) {
- if (_selectedIndex < _dataProvider.length) {
- _selectedItem = _dataProvider.getItemAt(_selectedIndex);
- itemChanged = true;
- } else {
- _selectedIndex = -1;
- }
- }
- }
- } else {
- itemChanged = _selectedItem != null;
- _selectedItem = null;
- _selectedIndex = -1;
- }
-
- dispatchEvent(new Event("dataProviderChanged"));
- if (itemChanged)
- dispatchEvent(new Event("selectedItemChanged"));
- if (oldIndex != _selectedIndex)
- dispatchEvent(new Event("selectedIndexChanged"));
- }
-
- private var _selectedIndex:int = -1;
-
- /**
- * @copy org.apache.royale.core.ISelectionModel#selectedIndex
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- */
- override public function get selectedIndex():int
- {
- return _selectedIndex;
- }
-
- /**
- * @private
- */
- override public function set selectedIndex(value:int):void
- {
-
- if (!_dataProvider) {
- _selectedIndex = value;
- return;
- }
- if (value == _selectedIndex) return;
-
- const oldItem:Object = _selectedItem;
- _selectedIndex = value < _dataProvider.length ? value : _dataProvider.length - 1;
- if (_selectedIndex != -1) {
- _selectedItem = _dataProvider.getItemAt(_selectedIndex);
- } else {
- _selectedItem = null;
- }
-
- if ( oldItem != _selectedItem)
- dispatchEvent(new Event("selectedItemChanged"));
- dispatchEvent(new Event("selectedIndexChanged"));
- if (!_processingInteractiveChange) {
- dispatchEvent(new Event("change"));
- }
- }
-
- private var _selectedItem:Object;
-
- /**
- * @copy org.apache.royale.core.ISelectionModel#selectedItem
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.9.4
- */
- override public function get selectedItem():Object
- {
- return _selectedItem;
- }
-
- /**
- * @private
- */
- override public function set selectedItem(value:Object):void
- {
- if (value == _selectedItem) return;
- _selectedItem = value;
- if (_dataProvider) {
- const indexChanged:Boolean = _selectedIndex != (_selectedIndex = _dataProvider.getItemIndex(value));
-
- dispatchEvent(new Event("selectedItemChanged"));
- if (indexChanged)
- dispatchEvent(new Event("selectedIndexChanged"));
- if (!_processingInteractiveChange) {
- dispatchEvent(new Event("change"));
- }
- }
- }
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IDropDownListModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IDropDownListModel.as
index dce03ef..43c75b3 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IDropDownListModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IDropDownListModel.as
@@ -30,6 +30,6 @@ package org.apache.royale.jewel.beads.models
{
function get offset():int;
- function set processingInteractiveChange(value:Boolean):void;
+ function setProcessingInteractiveChange(value:Boolean):void;
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IDropDownListModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
similarity index 80%
copy from frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IDropDownListModel.as
copy to frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
index dce03ef..62903df 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IDropDownListModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
@@ -18,18 +18,19 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.beads.models
{
+
+ import org.apache.royale.core.ISelectionModel;
+
/**
- * The IDropDownListModel interface is a marker interface
+ * The IJewelSelectionModel interface is a simple extension to core ISelectionModel
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.9.4
*/
- public interface IDropDownListModel
+ public interface IJewelSelectionModel extends ISelectionModel
{
-
- function get offset():int;
- function set processingInteractiveChange(value:Boolean):void;
+ function set dispatchChangeOnDataProviderChange(value:Boolean):void
}
}