You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2014/03/19 22:09:48 UTC
git commit: [flex-asjs] [refs/heads/develop] - Changes to the SDK,
mostly on the JavaScript side,
to connect display parent chain using get_parent(). Included changes to enable
pop-ups via UIUtils class. Added format bead support to JavaScript side of SD
Repository: flex-asjs
Updated Branches:
refs/heads/develop 2d0d52a97 -> 02420b9a3
Changes to the SDK, mostly on the JavaScript side, to connect display parent chain using get_parent(). Included changes to enable pop-ups via UIUtils class. Added format bead support to JavaScript side of SDK.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/02420b9a
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/02420b9a
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/02420b9a
Branch: refs/heads/develop
Commit: 02420b9a37e27ea79f9264f78f309651c14333f5
Parents: 2d0d52a
Author: Peter Ent <pe...@apache.org>
Authored: Wed Mar 19 17:09:35 2014 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Wed Mar 19 17:09:35 2014 -0400
----------------------------------------------------------------------
.../src/org/apache/flex/core/PopUpManager.as | 94 --------------------
.../apache/flex/utils/MXMLDataInterpreter.as | 6 +-
.../src/org/apache/flex/utils/UIUtils.as | 43 +++++++++
.../src/org/apache/flex/core/IFormatBead.js | 71 +++++++++++++++
.../FlexJS/src/org/apache/flex/core/IParent.js | 67 ++++++++++++++
.../src/org/apache/flex/core/IPopUpHost.js | 43 +++++++++
.../FlexJS/src/org/apache/flex/core/ListBase.js | 1 +
.../FlexJS/src/org/apache/flex/core/UIBase.js | 12 +++
.../FlexJS/src/org/apache/flex/core/ViewBase.js | 6 +-
.../apache/flex/html/staticControls/Label.js | 1 +
.../apache/flex/html/staticControls/Panel.js | 1 +
.../supportClasses/NonVirtualDataGroup.js | 8 +-
.../apache/flex/utils/MXMLDataInterpreter.js | 9 +-
.../FlexJS/src/org/apache/flex/utils/UIUtils.js | 40 ++++++++-
14 files changed, 299 insertions(+), 103 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/PopUpManager.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/PopUpManager.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/PopUpManager.as
deleted file mode 100644
index ad24f41..0000000
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/PopUpManager.as
+++ /dev/null
@@ -1,94 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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 flash.display.DisplayObject;
- import flash.display.DisplayObjectContainer;
- import flash.events.Event;
-
- /**
- * The PopUpManager ensures that children that implement the
- * IPopUp interface are layered over the other children. Unlike
- * the Flex SDK, where the PopUpManager had APIs that you had to
- * use to add popups to the display list, this PopUpManager
- * monitors the children in a container. It assumes that no
- * other container will obscure the container it is monitoring.
- * A more sophisticated PopUpManager could handle such a
- * scenario, but most folks don't have overlapping top-level
- * "windows" in their user interfaces any more so a simpler
- * implementation will suffice for most applications.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public class PopUpManager implements IDocument
- {
- /**
- * Constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function PopUpManager()
- {
- }
-
- private var document:DisplayObjectContainer;
-
- /**
- * @copy org.apache.flex.core.IDocument#setDocument()
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function setDocument(document:Object, id:String = null):void
- {
- this.document = document as DisplayObjectContainer;
- this.document.addEventListener(Event.ADDED, addedHandler);
- }
-
- private function addedHandler(event:Event):void
- {
- if (event.target != document)
- return;
-
- var n:int = document.numChildren;
- var lastPopUp:int = n - 1;
-
- for (var i:int = n - 1; i >= 0; i--)
- {
- var child:DisplayObject = document.getChildAt(n);
- if (child is IPopUp)
- {
- if (i < lastPopUp)
- {
- document.setChildIndex(child, lastPopUp);
- lastPopUp--;
- }
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/MXMLDataInterpreter.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/MXMLDataInterpreter.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/MXMLDataInterpreter.as
index 577690d..ec96f89 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/MXMLDataInterpreter.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/MXMLDataInterpreter.as
@@ -365,9 +365,9 @@ public class MXMLDataInterpreter
bead.strand = host as IStrand;
}
- if (l>0) {
- IEventDispatcher(host).dispatchEvent(new Event("beadsAdded"));
- }
+// if (l>0) {
+// IEventDispatcher(host).dispatchEvent(new Event("beadsAdded"));
+// }
}
m = data[i++]; // num styles
for (j = 0; j < m; j++)
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as
index a812b60..e05e2b6 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as
@@ -18,6 +18,7 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.flex.utils
{
+ import org.apache.flex.core.IPopUpHost;
import org.apache.flex.core.UIBase;
/**
@@ -42,6 +43,9 @@ package org.apache.flex.utils
/**
* Centers the given item relative to another item. Typically the item being centered is
* a child or sibling of the second item.
+ *
+ * @param item The component item being centered.
+ * @param relativeTo The component used as reference for the centering.
*
* @langversion 3.0
* @playerversion Flash 10.2
@@ -56,5 +60,44 @@ package org.apache.flex.utils
item.x = xpos;
item.y = ypos;
}
+
+ /**
+ * Given a component starting point, this function walks up the parent chain
+ * looking for a component that implements the IPopUpHost interface. The function
+ * either returns that component or null if no IPopUpHost can be found.
+ *
+ * @param start A component to start the search.
+ * @return A component that implements IPopUpHost or null.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public static function findPopUpHost(start:UIBase):IPopUpHost
+ {
+ while( start != null && !(start is IPopUpHost) ) {
+ start = start.parent as UIBase;
+ }
+
+ return start as IPopUpHost;
+ }
+
+ /**
+ * Removes the given component from the IPopUpHost.
+ *
+ * @param start A component to start the search.
+ * @return A component that implements IPopUpHost or null.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public static function removePopUp(popUp:UIBase):void
+ {
+ var host:IPopUpHost = popUp.parent as IPopUpHost;
+ host.removeElement(popUp);
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/core/IFormatBead.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IFormatBead.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IFormatBead.js
new file mode 100644
index 0000000..a7daf3c
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IFormatBead.js
@@ -0,0 +1,71 @@
+/**
+ * Licensed 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.
+ */
+
+/**
+ * @fileoverview
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.IFormatBead');
+
+
+
+/**
+ * @interface
+ * @extends {org.apache.flex.core.IBead}
+ * @extends {org.apache.flex.events.IEventDispatcher}
+ */
+org.apache.flex.core.IFormatBead = function() {
+};
+
+
+/**
+ * @return {string}
+ */
+org.apache.flex.core.IFormatBead.prototype.get_propertyName = function() {};
+
+
+/**
+ * @param {string} value
+ */
+org.apache.flex.core.IFormatBead.prototype.set_propertyName = function(value) {};
+
+
+/**
+ * @return {string}
+ */
+org.apache.flex.core.IFormatBead.prototype.get_eventName = function() {};
+
+
+/**
+ * @param {string} value
+ */
+org.apache.flex.core.IFormatBead.prototype.set_eventName = function(value) {};
+
+
+/**
+ * @return {string}
+ */
+org.apache.flex.core.IFormatBead.prototype.get_formattedString = function() {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.IFormatBead.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'IFormatBead', qName: 'org.apache.flex.core.IFormatBead'}],
+ interfaces: [org.apache.flex.core.IBead, org.apache.flex.events.IEventDispatcher]
+};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/core/IParent.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IParent.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IParent.js
new file mode 100644
index 0000000..1ff763a
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IParent.js
@@ -0,0 +1,67 @@
+/**
+ * Licensed 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.
+ */
+
+/**
+ * org.apache.flex.core.IParent
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.IParent');
+
+
+
+/**
+ * @interface
+ */
+org.apache.flex.core.IParent = function() {
+};
+
+
+/**
+ * @param {Object} c
+ */
+org.apache.flex.core.IParent.prototype.addElement = function(c) {};
+
+
+/**
+ * @param {Object} c
+ * @param {number} index
+ */
+org.apache.flex.core.IParent.prototype.addElementAt = function(c, index) {};
+
+
+/**
+ * @return {number}
+ * @param {Object} c
+ */
+org.apache.flex.core.IParent.prototype.getElementIndex = function(c) {};
+
+
+/**
+ * @param {Object} c
+ */
+org.apache.flex.core.IParent.prototype.removeElement = function(c) {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.IParent.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'IParent', qName: 'org.apache.flex.core.IParent'}]
+};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/core/IPopUpHost.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IPopUpHost.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IPopUpHost.js
new file mode 100644
index 0000000..9d2d502
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IPopUpHost.js
@@ -0,0 +1,43 @@
+/**
+ * Licensed 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.
+ */
+
+/**
+ * org.apache.flex.core.IPopUpHost
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.IPopUpHost');
+
+
+
+/**
+ * @interface
+ * @extends {org.apache.flex.core.IParent}
+ */
+org.apache.flex.core.IPopUpHost = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.IPopUpHost.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'IPopUpHost', qName: 'org.apache.flex.core.IPopUpHost'}],
+ interfaces: [org.apache.flex.core.IParent]
+};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/core/ListBase.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/ListBase.js b/frameworks/js/FlexJS/src/org/apache/flex/core/ListBase.js
index 13030fd..fe315ca 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/ListBase.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/ListBase.js
@@ -65,6 +65,7 @@ org.apache.flex.core.ListBase.prototype.createElement = function() {
this.element.style.borderWidth = '1px';
this.element.style.borderColor = '#333333';
this.positioner = this.element;
+ this.element.flexjs_wrapper = this;
return this.element;
};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js b/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
index d331fe2..35681fd 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
@@ -78,6 +78,8 @@ org.apache.flex.core.UIBase.prototype.createElement = function() {
if (this.positioner == null)
this.positioner = this.element;
+ this.element['flexjs_wrapper'] = this;
+
return this.element;
};
@@ -140,6 +142,16 @@ org.apache.flex.core.UIBase.prototype.removeElement = function(c) {
/**
+ * @return {Object} The parent of this object.
+ */
+org.apache.flex.core.UIBase.prototype.get_parent = function() {
+ var p = this.element.parentNode;
+ var wrapper = p['flexjs_wrapper'];
+ return wrapper;
+};
+
+
+/**
*/
org.apache.flex.core.UIBase.prototype.addedToParent = function() {
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/core/ViewBase.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/ViewBase.js b/frameworks/js/FlexJS/src/org/apache/flex/core/ViewBase.js
index f1ac3b0..5e47265 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/ViewBase.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/ViewBase.js
@@ -14,6 +14,7 @@
goog.provide('org.apache.flex.core.ViewBase');
+goog.require('org.apache.flex.core.IPopUpHost');
goog.require('org.apache.flex.core.UIBase');
goog.require('org.apache.flex.core.ValuesManager');
goog.require('org.apache.flex.events.Event');
@@ -24,6 +25,7 @@ goog.require('org.apache.flex.utils.MXMLDataInterpreter');
/**
* @constructor
+ * @implements {org.apache.flex.core.IPopUpHost}
* @extends {org.apache.flex.core.UIBase}
*/
org.apache.flex.core.ViewBase = function() {
@@ -58,7 +60,8 @@ goog.inherits(org.apache.flex.core.ViewBase, org.apache.flex.core.UIBase);
*/
org.apache.flex.core.ViewBase.prototype.FLEXJS_CLASS_INFO =
{ names: [{ name: 'ViewBase',
- qName: 'org.apache.flex.core.ViewBase' }] };
+ qName: 'org.apache.flex.core.ViewBase' }],
+ interfaces: [org.apache.flex.core.IPopUpHost] };
/**
@@ -88,6 +91,7 @@ org.apache.flex.core.ViewBase.prototype.MXMLDescriptor = null;
org.apache.flex.core.ViewBase.prototype.addedToParent = function() {
//goog.base(this,'addedToParent');
+ this.element.flexjs_wrapper = this;
if (org.apache.flex.core.ValuesManager.valuesImpl.init) {
org.apache.flex.core.ValuesManager.valuesImpl.init(this);
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Label.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Label.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Label.js
index 076235a..ec25864 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Label.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Label.js
@@ -27,6 +27,7 @@ org.apache.flex.html.staticControls.Label = function() {
this.element = document.createElement('div');
this.positioner = this.element;
+ this.element.flexjs_wrapper = this;
};
goog.inherits(org.apache.flex.html.staticControls.Label,
org.apache.flex.core.UIBase);
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Panel.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Panel.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Panel.js
index a5af58b..88a22b5 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Panel.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/Panel.js
@@ -120,6 +120,7 @@ org.apache.flex.html.staticControls.Panel.prototype.createElement =
this.element.className = 'Panel';
this.contentArea = document.createElement('div');
+ this.contentArea.flexjs_wrapper = this;
this.element.appendChild(this.contentArea);
this.panelView = new org.apache.flex.html.staticControls.beads.PanelView();
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/NonVirtualDataGroup.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/NonVirtualDataGroup.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/NonVirtualDataGroup.js
index ab6a850..2b64d93 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/NonVirtualDataGroup.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/NonVirtualDataGroup.js
@@ -15,6 +15,8 @@
goog.provide('org.apache.flex.html.staticControls.supportClasses.NonVirtualDataGroup');
goog.require('org.apache.flex.core.UIBase');
+goog.require('org.apache.flex.utils.Language');
+goog.require('org.apache.flex.html.staticControls.supportClasses.DataItemRenderer');
@@ -61,6 +63,7 @@ org.apache.flex.html.staticControls.supportClasses.NonVirtualDataGroup.
this.element.style.overflow = 'auto';
this.element.style.display = 'inline-block';
this.element.style.position = 'inherit';
+ this.element.flexjs_wrapper = this;
this.set_className('NonVirtualDataGroup');
this.positioner = this.element;
@@ -77,8 +80,9 @@ org.apache.flex.html.staticControls.supportClasses.NonVirtualDataGroup.
prototype.addElement = function(value) {
goog.base(this, 'addElement', value);
- value.set_index(this.renderers.length);
- value.set_itemRendererParent(this);
+ var itemRenderer = org.apache.flex.utils.Language.as(value,org.apache.flex.html.staticControls.supportClasses.DataItemRenderer);
+ itemRenderer.set_index(this.renderers.length);
+ itemRenderer.set_itemRendererParent(this);
this.renderers.push(value);
};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js b/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
index 9bfd00d..4b9f273 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/utils/MXMLDataInterpreter.js
@@ -102,7 +102,7 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLObject =
org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
function(document, parent, data, opt_recursive) {
var bead, beadOffset, beads, children, Cls, comp, comps, generateMXMLArray,
- generateMXMLObject, i, id, j, k, l, m, n, name, self, simple, value;
+ generateMXMLObject, i, id, j, k, l, m, n, name, self, simple, value, dispatchBeadsAdded;
if (opt_recursive === undefined) {
opt_recursive = true;
@@ -122,6 +122,7 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
comp = new Cls();
id = null;
+ dispatchBeadsAdded = false;
m = data[i++]; // num props
if (m > 0 && data[0] === 'model') {
@@ -209,6 +210,7 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
for (k = 0; k < l; k++) {
bead = beads[k];
comp.addBead(bead);
+ dispatchBeadsAdded = true;
}
}
@@ -254,6 +256,7 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
if (parent) {
parent.addElement(comp);
+ dispatchBeadsAdded = true;
}
children = data[i++];
@@ -286,6 +289,10 @@ org.apache.flex.utils.MXMLDataInterpreter.generateMXMLArray =
}
comps.push(comp);
+
+ if (dispatchBeadsAdded) {
+ comp.dispatchEvent('beadsAdded');
+ }
}
return comps;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/02420b9a/frameworks/js/FlexJS/src/org/apache/flex/utils/UIUtils.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/utils/UIUtils.js b/frameworks/js/FlexJS/src/org/apache/flex/utils/UIUtils.js
index edf18bc..9e2e9fc 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/utils/UIUtils.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/utils/UIUtils.js
@@ -14,6 +14,9 @@
goog.provide('org.apache.flex.utils.UIUtils');
+goog.require('org.apache.flex.core.IPopUpHost');
+goog.require('org.apache.flex.utils.Language');
+
/**
@@ -41,8 +44,41 @@ org.apache.flex.utils.UIUtils.prototype.FLEXJS_CLASS_INFO =
org.apache.flex.utils.UIUtils.center =
function(item, relativeTo) {
- var xpos = (relativeTo.get_width() - item.get_width()) / 2;
- var ypos = (relativeTo.get_height() - item.get_height()) / 2;
+ var rw = relativeTo.get_width();
+ if (isNaN(rw)) rw = window.innerWidth;
+ var rh = relativeTo.get_height();
+ if (isNaN(rh)) rh = window.innerHeight;
+
+ var xpos = (rw - item.get_width()) / 2;
+ var ypos = (rh - item.get_height()) / 2;
item.set_x(xpos);
item.set_y(ypos);
};
+
+
+/**
+ * @expose
+ * @param {Object} start A component to start the search.
+ * @return {Object} A component that implements IPopUpHost.
+ */
+org.apache.flex.utils.UIUtils.findPopUpHost =
+ function(start) {
+
+ while (start != null && !org.apache.flex.utils.Language.is(start, org.apache.flex.core.IPopUpHost)) {
+ start = start.get_parent();
+ }
+
+ return start;
+};
+
+
+/**
+ * @expose
+ * @param {Object} popUp An IPopUpHost component looking to be removed.
+ */
+org.apache.flex.utils.UIUtils.removePopUp =
+ function(popUp) {
+
+ var p = popUp.get_parent();
+ p.removeElement(popUp);
+};