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 2022/01/27 03:19:32 UTC
[royale-asjs] branch develop updated (9ab218a -> f4622ae)
This is an automated email from the ASF dual-hosted git repository.
gregdove pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git.
from 9ab218a Small tweaks in XML/XMLList. Many new tests added (requires recent compiler updates to pass)
new 5746504 Some interim tuning in core classes to avoid duplicated code for removeBead method, and adding support for unlistening to strand in LayoutBase if layout is set to null (layout swapping)
new f4622ae Trying to get more of DataGrid emulation aligned with the original Flex - using DataGridColumn.itemToLabel for DataGridListData.label
The 2 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:
.../royale/org/apache/royale/core/Application.as | 6 +-
.../royale/org/apache/royale/html/MXMLBeadView.as | 6 +-
.../org/apache/royale/html/beads/TextAreaView.as | 6 +-
.../html/supportClasses/TextFieldItemRenderer.as | 8 +-
.../projects/Core/src/main/royale/CoreClasses.as | 1 +
.../src/main/royale/org/apache/royale/core/Bead.as | 9 ++-
.../org/apache/royale/core/ElementWrapper.as | 11 ++-
.../org/apache/royale/core/HTMLElementWrapper.as | 6 +-
.../royale/org/apache/royale/core/LayoutBase.as | 20 +++--
.../main/royale/org/apache/royale/core/Strand.as | 6 +-
.../royale/org/apache/royale/core/UIButtonBase.as | 8 +-
.../org/apache/royale/utils/removeBeadFromBeads.as | 91 ++++++++++++++++++++++
.../royale/org/apache/royale/jewel/Application.as | 7 +-
.../beads/DataGridItemRendererInitializer.as | 16 ++--
.../main/royale/mx/controls/beads/DataGridView.as | 4 +-
.../mx/controls/dataGridClasses/DataGridColumn.as | 32 +++++---
.../royale/org/apache/royale/net/BinaryUploader.as | 9 ++-
.../royale/org/apache/royale/net/HTTPService.as | 9 ++-
18 files changed, 201 insertions(+), 54 deletions(-)
create mode 100644 frameworks/projects/Core/src/main/royale/org/apache/royale/utils/removeBeadFromBeads.as
[royale-asjs] 02/02: Trying to get more of DataGrid emulation aligned with the original Flex - using DataGridColumn.itemToLabel for DataGridListData.label
Posted by gr...@apache.org.
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
commit f4622aeb976b8bef9b1832ca1e71c59e8e02536c
Author: greg-dove <gr...@gmail.com>
AuthorDate: Thu Jan 27 16:19:20 2022 +1300
Trying to get more of DataGrid emulation aligned with the original Flex - using DataGridColumn.itemToLabel for DataGridListData.label
---
.../beads/DataGridItemRendererInitializer.as | 16 +++++++----
.../main/royale/mx/controls/beads/DataGridView.as | 4 ++-
.../mx/controls/dataGridClasses/DataGridColumn.as | 32 ++++++++++++++--------
3 files changed, 34 insertions(+), 18 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
index c3d1eb2..39314d2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
@@ -22,6 +22,7 @@ package mx.controls.beads
import mx.controls.DataGrid;
import mx.controls.beads.models.DataGridColumnICollectionViewModel;
+ import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.dataGridClasses.DataGridColumnList;
import mx.controls.dataGridClasses.DataGridListData;
import mx.core.UIComponent;
@@ -55,6 +56,8 @@ package mx.controls.beads
/**
* @private
* @royaleignorecoercion org.apache.royale.core.HTMLElementWrapper
+ *
+ * @royaleignorecoercion mx.controls.dataGridClasses.DataGridColumn
*/
override public function initializeIndexedItemRenderer(ir:IIndexedItemRenderer, data:Object, index:int):void
{
@@ -70,15 +73,18 @@ package mx.controls.beads
var dgColumnListModel:DataGridColumnICollectionViewModel = dgColumnList.model as DataGridColumnICollectionViewModel;
var dg:DataGrid = (dgColumnList.grid as DataGrid);
- var dataField:String = dg.columns[dgColumnListModel.columnIndex].dataField;
+ var dgColumn:DataGridColumn = dg.columns[dgColumnListModel.columnIndex] as DataGridColumn;
var text:String = "";
- try {
- text = data[dataField];
+
+ /*try {
+ text = dgColumn.labelFunction !=null ? dgColumn.labelFunction(data, dgColumn) : data[dgColumn.dataField];
} catch (e:Error)
{
- }
+ }*/
+ text = dgColumn.itemToLabel(data);
+
// Set the listData with the depth of this item
- var listData:DataGridListData = new DataGridListData(text, dataField, dgColumnListModel.columnIndex, "", (dgColumnList.grid as DataGrid), index);
+ var listData:DataGridListData = new DataGridListData(text, dgColumn.dataField, dgColumnListModel.columnIndex, "", dg, index);
(ir as IListDataItemRenderer).listData = listData;
}
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 e271e45..106e9f4 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
@@ -355,11 +355,13 @@ COMPILE::JS{
* @royaleignorecoercion mx.controls.listClasses.ListBase
* @royaleignorecoercion mx.controls.dataGridClasses.DataGridColumnList
* @royaleignorecoercion mx.controls.dataGridClasses.DataGridColumn
- * @royaleignorecoercion org.apache.royale.core.UIBase;
+ * @royaleignorecoercion org.apache.royale.core.UIBase
+ * @royaleignorecoercion mx.controls.beads.models.DataGridColumnICollectionViewModel
*/
override protected function onCreatedList(list:IDataGridColumnList, forColumn:IDataGridColumn):void{
(list as DataGridColumnList).grid = _strand as ListBase;
DataGridColumn(forColumn).list = list as UIBase;
+ ((list as DataGridColumnList).model as DataGridColumnICollectionViewModel).columnIndex = DataGridColumn(forColumn).colNum;
}
protected function preDestroyList(list:IDataGridColumnList):void{
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 c2fa17d..70dda04 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
@@ -207,7 +207,7 @@ import org.apache.royale.core.IHasLabelField;
* @playerversion AIR 1.1
* @productversion Flex 3
*/
-public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGridColumn implements IHasLabelField // IIMESupport
+public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGridColumn /*implements IHasLabelField */// IIMESupport
{
//--------------------------------------------------------------------------
//
@@ -364,22 +364,29 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
// labelFunction
//----------------------------------
+ /**
+ *
+ * @param data
+ * @return stringified value of data
+ *
+ * @royaleignorecoercion XML
+ * @royaleignorecoercion String
+ *
+ */
public function itemToLabel(data:Object):String
{
if (data == null)
return " ";
- /*
- if (labelFunction != null)
- return labelFunction(data);
- */
-
+ if (_labelFunction != null)
+ return _labelFunction(data, this);
+
if (data is XML)
{
try
{
- if ((data as XML)[labelField].length() != 0)
- data = (data as XML)[labelField];
+ if ((data as XML)[dataField].length() != 0)
+ data = (data as XML)[dataField];
//by popular demand, this is a default XML labelField
//else if (data.@label.length() != 0)
// data = data.@label;
@@ -392,8 +399,8 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
{
try
{
- if (data[labelField] != null)
- data = data[labelField];
+ if (data[dataField] != null)
+ data = data[dataField];
}
catch(e:Error)
{
@@ -414,7 +421,8 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
return " ";
}
- private var _labelField:String;
+ //DataGridColumn does not have 'labelField'
+ /* private var _labelField:String;
public function get labelField():String
{
return _labelField;
@@ -423,7 +431,7 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
public function set labelField(value:String):void
{
_labelField = value;
- }
+ }*/
/**
* @private
[royale-asjs] 01/02: Some interim tuning in core classes to avoid duplicated code for removeBead method, and adding support for unlistening to strand in LayoutBase if layout is set to null (layout swapping)
Posted by gr...@apache.org.
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
commit 57465046da4678a9e3f1613021e736955187a804
Author: greg-dove <gr...@gmail.com>
AuthorDate: Tue Jan 25 12:48:20 2022 +1300
Some interim tuning in core classes to avoid duplicated code for removeBead method, and adding support for unlistening to strand in LayoutBase if layout is set to null (layout swapping)
---
.../royale/org/apache/royale/core/Application.as | 6 +-
.../royale/org/apache/royale/html/MXMLBeadView.as | 6 +-
.../org/apache/royale/html/beads/TextAreaView.as | 6 +-
.../html/supportClasses/TextFieldItemRenderer.as | 8 +-
.../projects/Core/src/main/royale/CoreClasses.as | 1 +
.../src/main/royale/org/apache/royale/core/Bead.as | 9 ++-
.../org/apache/royale/core/ElementWrapper.as | 11 ++-
.../org/apache/royale/core/HTMLElementWrapper.as | 6 +-
.../royale/org/apache/royale/core/LayoutBase.as | 20 +++--
.../main/royale/org/apache/royale/core/Strand.as | 6 +-
.../royale/org/apache/royale/core/UIButtonBase.as | 8 +-
.../org/apache/royale/utils/removeBeadFromBeads.as | 91 ++++++++++++++++++++++
.../royale/org/apache/royale/jewel/Application.as | 7 +-
.../royale/org/apache/royale/net/BinaryUploader.as | 9 ++-
.../royale/org/apache/royale/net/HTTPService.as | 9 ++-
15 files changed, 167 insertions(+), 36 deletions(-)
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/Application.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/Application.as
index 6102f79..3b673cc 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/Application.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/Application.as
@@ -24,6 +24,7 @@ package org.apache.royale.core
import org.apache.royale.events.MouseEvent;
import org.apache.royale.utils.MXMLDataInterpreter;
import org.apache.royale.utils.Timer;
+ import org.apache.royale.utils.removeBeadFromBeads;
import org.apache.royale.utils.sendEvent;
COMPILE::SWF {
@@ -460,7 +461,7 @@ package org.apache.royale.core
COMPILE::SWF
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /* var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -470,7 +471,8 @@ package org.apache.royale.core
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,value,false);
}
/**
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/MXMLBeadView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/MXMLBeadView.as
index c5896e0..9995e34 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/MXMLBeadView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/MXMLBeadView.as
@@ -31,6 +31,7 @@ package org.apache.royale.html
import org.apache.royale.utils.MXMLDataInterpreter;
import org.apache.royale.utils.loadBeadFromValuesManager;
import org.apache.royale.core.IStrandWithModel;
+ import org.apache.royale.utils.removeBeadFromBeads;
[DefaultProperty("mxmlContent")]
@@ -306,7 +307,7 @@ package org.apache.royale.html
*/
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /* var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -316,7 +317,8 @@ package org.apache.royale.html
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,value, false);
}
}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextAreaView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextAreaView.as
index bb239e5..c61ac78 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextAreaView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextAreaView.as
@@ -33,6 +33,7 @@ package org.apache.royale.html.beads
import org.apache.royale.html.supportClasses.Border;
import org.apache.royale.html.supportClasses.VScrollBar;
import org.apache.royale.html.beads.models.ScrollBarModel;
+ import org.apache.royale.utils.removeBeadFromBeads;
/**
* The TextAreaView class is the default view for
@@ -248,7 +249,7 @@ package org.apache.royale.html.beads
*/
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /*var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -258,7 +259,8 @@ package org.apache.royale.html.beads
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads, value, false);
}
}
}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as
index 5efc71f..3c98bd6 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as
@@ -41,7 +41,8 @@ package org.apache.royale.html.supportClasses
import org.apache.royale.html.beads.ITextItemRenderer;
import org.apache.royale.utils.loadBeadFromValuesManager;
import org.apache.royale.core.IHasLabelField;
-
+ import org.apache.royale.utils.removeBeadFromBeads;
+
/**
* The TextFieldItemRenderer class provides a org.apache.royale.html.TextField as an itemRenderer.
*
@@ -542,7 +543,7 @@ package org.apache.royale.html.supportClasses
*/
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /*var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -552,7 +553,8 @@ package org.apache.royale.html.supportClasses
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,value, false)
}
/**
diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as b/frameworks/projects/Core/src/main/royale/CoreClasses.as
index ebb47c4..8dc1095 100644
--- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
@@ -330,6 +330,7 @@ internal class CoreClasses
import org.apache.royale.utils.measureComponent; measureComponent;
import org.apache.royale.utils.loadBeadFromValuesManager; loadBeadFromValuesManager;
+ import org.apache.royale.utils.removeBeadFromBeads;removeBeadFromBeads;
import org.apache.royale.utils.HSV; HSV;
import org.apache.royale.utils.rgbToHsv; rgbToHsv;
import org.apache.royale.utils.hsvToHex; hsvToHex;
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Bead.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Bead.as
index a36c76c..9dbf053 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Bead.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Bead.as
@@ -65,10 +65,15 @@ package org.apache.royale.core
/**
* Helper function to attach event listener without the need for casting
* @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ *
*/
- protected function listenOnStrand(eventType:String,handler:Function,capture:Boolean=false):void
+ protected function listenOnStrand(eventType:String,handler:Function,capture:Boolean=false,unListen:Boolean=false):void
{
- (_strand as IEventDispatcher).addEventListener(eventType, handler, capture);
+ if (unListen) {
+ (_strand as IEventDispatcher).removeEventListener(eventType, handler, capture);
+ } else {
+ (_strand as IEventDispatcher).addEventListener(eventType, handler, capture);
+ }
}
}
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
index f6ee842..f5517a1 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
@@ -39,6 +39,7 @@ package org.apache.royale.core
import org.apache.royale.events.Event;
import org.apache.royale.events.EventDispatcher;
+ import org.apache.royale.utils.removeBeadFromBeads;
COMPILE::SWF
public class ElementWrapper extends EventDispatcher implements IStrand
@@ -114,7 +115,7 @@ package org.apache.royale.core
*/
public function removeBead(bead:IBead):IBead
{
- var i:uint, n:uint, value:Object;
+ /*var i:uint, n:uint, value:Object;
n = _beads.length;
for (i = 0; i < n; i++)
{
@@ -128,7 +129,8 @@ package org.apache.royale.core
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,bead, true);
}
override public function addEventListener(type:String, handler:Function, opt_capture:Boolean = false, priority:int = 0, weak:Boolean = false):void
@@ -305,7 +307,7 @@ package org.apache.royale.core
*/
public function removeBead(bead:IBead):IBead
{
- var i:uint, n:uint, value:Object;
+ /*var i:uint, n:uint, value:Object;
n = _beads.length;
for (i = 0; i < n; i++)
{
@@ -318,7 +320,8 @@ package org.apache.royale.core
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,bead, false);
}
override public function addEventListener(type:String, handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = null):void
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
index 694f20a..c21738d 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
@@ -19,6 +19,7 @@
package org.apache.royale.core
{
import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.utils.removeBeadFromBeads;
COMPILE::SWF
{
@@ -98,7 +99,7 @@ package org.apache.royale.core
*/
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /*var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -108,7 +109,8 @@ package org.apache.royale.core
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,value, false);
}
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as
index 2110809..2f9733e 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as
@@ -84,16 +84,24 @@ package org.apache.royale.core
*/
override public function set strand(value:IStrand):void
{
+ if (value != _strand) {
+ if (_strand) setListeners(true);
+ }
_strand = value;
host = value as ILayoutChild;
- listenOnStrand("widthChanged", handleSizeChange);
- listenOnStrand("heightChanged", handleSizeChange);
- listenOnStrand("sizeChanged", handleSizeChange);
+ if (value) {
+ setListeners();
+ }
+ }
- listenOnStrand("childrenAdded", handleChildrenAdded);
- listenOnStrand("initComplete", handleInitComplete);
- listenOnStrand("layoutNeeded", handleLayoutNeeded);
+ protected function setListeners(off:Boolean=false):void{
+ listenOnStrand("widthChanged", handleSizeChange, false, off);
+ listenOnStrand("heightChanged", handleSizeChange, false, off);
+ listenOnStrand("sizeChanged", handleSizeChange, false, off);
+ listenOnStrand("childrenAdded", handleChildrenAdded, false, off);
+ listenOnStrand("initComplete", handleInitComplete, false, off);
+ listenOnStrand("layoutNeeded", handleLayoutNeeded, false, off);
}
private var lastWidth:Number = -1;
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Strand.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Strand.as
index 5610ccc..c5a8901 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Strand.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/Strand.as
@@ -20,6 +20,7 @@ package org.apache.royale.core
{
import org.apache.royale.events.Event;
import org.apache.royale.events.EventDispatcher;
+ import org.apache.royale.utils.removeBeadFromBeads;
import org.apache.royale.utils.sendStrandEvent;
/**
@@ -131,7 +132,7 @@ package org.apache.royale.core
*/
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /*var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -141,7 +142,8 @@ package org.apache.royale.core
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,value, false);
}
}
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as
index 7620dd5..38bc88c 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as
@@ -31,7 +31,8 @@ package org.apache.royale.core
import org.apache.royale.events.utils.MouseEventConverter;
import org.apache.royale.events.IEventDispatcher;
import org.apache.royale.utils.loadBeadFromValuesManager;
-
+ import org.apache.royale.utils.removeBeadFromBeads;
+
//--------------------------------------
// Events
//--------------------------------------
@@ -808,7 +809,7 @@ package org.apache.royale.core
*/
public function removeBead(value:IBead):IBead
{
- var n:int = strand.length;
+ /*var n:int = strand.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = strand[i];
@@ -818,7 +819,8 @@ package org.apache.royale.core
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(strand,value, false)
}
/**
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/removeBeadFromBeads.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/removeBeadFromBeads.as
new file mode 100644
index 0000000..c466c75
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/removeBeadFromBeads.as
@@ -0,0 +1,91 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.utils
+{
+ import org.apache.royale.core.IBead;
+ import org.apache.royale.core.IStrand;
+ import org.apache.royale.core.ValuesManager;
+
+ /**
+ * Utility function for internal use in removeBead methods
+ * @param beads the implementation's collection of beads to check against
+ * @param beadToRemove the bead to remove
+ * @param setStrandNull true if the strand setter of the removed bead should be set to null when it is removed
+ *
+ * @return the removed Bead (if it was present), with its strand value set to null, otherwise null (no bead was removed).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Royale 0.9.9
+ *
+ */
+ COMPILE::SWF
+ public function removeBeadFromBeads(beads:Vector.<IBead>, beadToRemove:IBead, setStrandNull:Boolean):IBead
+ {
+ var i:uint, n:uint;
+ n = beads.length;
+ for (i = 0; i < n; i++)
+ {
+ if (beadToRemove === beads[i])
+ {
+ beads.splice(i, 1);
+ if (setStrandNull) beadToRemove.strand = null;
+ return beadToRemove;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Utility function for internal use in removeBead methods
+ * @param beads the implementation's collection of beads to check against
+ * @param beadToRemove the bead to remove
+ * @param setStrandNull true if the strand setter of the removed bead should be set to null when it is removed
+ *
+ * @return the removed Bead (if it was present), with its strand value set to null, otherwise null (no bead was removed).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Royale 0.9.9
+ * @royaleignorecoercion org.apache.royale.core.IBead
+ *
+ * @royalesuppressexport
+ * @royaleignorecoercion Array
+ */
+ COMPILE::JS
+ public function removeBeadFromBeads(beads:Object, beadToRemove:IBead, setStrandNull:Boolean):IBead
+ {
+ var i:uint, n:uint;
+ var arr:Array = beads as Array; //we don't really have a Vector.<IBead> internally
+ n = arr.length;
+ for (i = 0; i < n; i++)
+ {
+ if (beadToRemove === arr[i])
+ {
+ arr.splice(i, 1);
+ if (setStrandNull) beadToRemove.strand = null;
+ return beadToRemove;
+ }
+ }
+ return null;
+ }
+}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Application.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Application.as
index dbcd24a..a74bc97 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Application.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Application.as
@@ -18,6 +18,8 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel
{
+ import org.apache.royale.utils.removeBeadFromBeads;
+
COMPILE::SWF {
import flash.display.DisplayObject;
import flash.display.StageAlign;
@@ -480,7 +482,7 @@ package org.apache.royale.jewel
COMPILE::SWF
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /*var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -490,7 +492,8 @@ package org.apache.royale.jewel
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads, value, false);
}
/**
diff --git a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as
index 120f6ac..067ee40 100644
--- a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as
+++ b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as
@@ -18,7 +18,9 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.net
{
- COMPILE::SWF
+import org.apache.royale.utils.removeBeadFromBeads;
+
+COMPILE::SWF
{
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
@@ -482,7 +484,7 @@ package org.apache.royale.net
COMPILE::SWF
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /*var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -492,7 +494,8 @@ package org.apache.royale.net
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads, value, false);
}
COMPILE::SWF
diff --git a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/HTTPService.as b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/HTTPService.as
index 667d99c..9b63f35 100644
--- a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/HTTPService.as
+++ b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/HTTPService.as
@@ -18,7 +18,9 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.net
{
- COMPILE::SWF
+import org.apache.royale.utils.removeBeadFromBeads;
+
+COMPILE::SWF
{
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
@@ -496,7 +498,7 @@ package org.apache.royale.net
COMPILE::SWF
public function removeBead(value:IBead):IBead
{
- var n:int = _beads.length;
+ /*var n:int = _beads.length;
for (var i:int = 0; i < n; i++)
{
var bead:IBead = _beads[i];
@@ -506,7 +508,8 @@ package org.apache.royale.net
return bead;
}
}
- return null;
+ return null;*/
+ return removeBeadFromBeads(_beads,value, false);
}
/**