You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/12/09 06:17:16 UTC
[29/31] git commit: [flex-asjs] [refs/heads/develop] - JS layout has
to propagate sizeChanged events
JS layout has to propagate sizeChanged events
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/7e97921c
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/7e97921c
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/7e97921c
Branch: refs/heads/develop
Commit: 7e97921cd2162397f206290ac8923237831e9092
Parents: 3ad5889
Author: Alex Harui <ah...@apache.org>
Authored: Mon Dec 8 18:03:48 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Dec 8 21:09:29 2014 -0800
----------------------------------------------------------------------
.../html/beads/layouts/NonVirtualBasicLayout.js | 77 +++++++++++++++++++-
.../beads/layouts/NonVirtualHorizontalLayout.js | 55 +++++++++++---
.../beads/layouts/NonVirtualVerticalLayout.js | 50 +++++++++++--
3 files changed, 159 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7e97921c/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualBasicLayout.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualBasicLayout.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualBasicLayout.js
index cc0d36c..814394e 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualBasicLayout.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualBasicLayout.js
@@ -15,6 +15,9 @@
goog.provide('org.apache.flex.html.beads.layouts.NonVirtualBasicLayout');
goog.require('org.apache.flex.core.IBeadLayout');
+goog.require('org.apache.flex.core.ILayoutChild');
+goog.require('org.apache.flex.core.ValuesManager');
+goog.require('org.apache.flex.utils.Language');
@@ -48,17 +51,83 @@ org.apache.flex.html.beads.layouts.NonVirtualBasicLayout.
prototype.set_strand = function(value) {
if (this.strand_ !== value) {
this.strand_ = value;
- this.strand_.addEventListener('childrenAdded',
- goog.bind(this.changeHandler, this));
- this.strand_.addEventListener('layoutNeeded',
- goog.bind(this.changeHandler, this));
+ if (this.strand_.isWidthSizedToContent() &&
+ this.strand_.isHeightSizedToContent())
+ this.addOtherListeners();
+ else {
+ this.strand_.addEventListener('heightChanged',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('widthChanged',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('sizeChanged',
+ goog.bind(this.sizeChangeHandler, this));
+ if (!isNaN(this.strand_.get_explicitWidth()) &&
+ !isNaN(this.strand_.get_explicitHeight()))
+ this.addOtherListeners();
+ }
}
};
/**
+ *
+ */
+org.apache.flex.html.beads.layouts.NonVirtualBasicLayout.
+ prototype.addOtherListeners = function() {
+ this.strand_.addEventListener('childrenAdded',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('layoutNeeded',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('itemsCreated',
+ goog.bind(this.changeHandler, this));
+};
+
+
+/**
+ * @param {org.apache.flex.events.Event} event The event.
+ */
+org.apache.flex.html.beads.layouts.NonVirtualBasicLayout.
+ prototype.sizeChangeHandler = function(event) {
+ this.addOtherListeners();
+ this.changeHandler(event);
+};
+
+
+/**
* @param {org.apache.flex.events.Event} event The text getter.
*/
org.apache.flex.html.beads.layouts.NonVirtualBasicLayout.
prototype.changeHandler = function(event) {
+ var i, n, h, w;
+
+ var viewBead = this.strand_.getBeadByType(org.apache.flex.core.ILayoutParent);
+ var contentView = viewBead.get_contentView();
+ w = contentView.get_width();
+ h = contentView.get_height();
+ n = contentView.get_numElements();
+ for (i = 0; i < n; i++) {
+ var child = contentView.getElementAt(i);
+ var left = org.apache.flex.core.ValuesManager.valuesImpl.getValue(child, 'left');
+ var right = org.apache.flex.core.ValuesManager.valuesImpl.getValue(child, 'right');
+ var top = org.apache.flex.core.ValuesManager.valuesImpl.getValue(child, 'top');
+ var bottom = org.apache.flex.core.ValuesManager.valuesImpl.getValue(child, 'bottom');
+
+ if (!isNaN(left)) {
+ child.positioner.style.position = 'absolute';
+ child.positioner.style.left = left.toString() + 'px';
+ }
+ if (!isNaN(top)) {
+ child.positioner.style.position = 'absolute';
+ child.positioner.style.top = top.toString() + 'px';
+ }
+ if (!isNaN(right)) {
+ child.positioner.style.position = 'absolute';
+ child.positioner.style.right = right.toString() + 'px';
+ }
+ if (!isNaN(bottom)) {
+ child.positioner.style.position = 'absolute';
+ child.positioner.style.bottom = bottom.toString() + 'px';
+ }
+ child.dispatchEvent('sizeChanged');
+ }
};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7e97921c/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.js
index c52d458..320985d 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.js
@@ -51,21 +51,50 @@ org.apache.flex.html.beads.layouts.NonVirtualHorizontalLayout.
function(value) {
if (this.strand_ !== value) {
this.strand_ = value;
- this.strand_.addEventListener('childrenAdded',
- goog.bind(this.changeHandler, this));
- this.strand_.addEventListener('itemsCreated',
- goog.bind(this.changeHandler, this));
- this.strand_.addEventListener('elementAdded',
- goog.bind(this.changeHandler, this));
+ if (this.strand_.isWidthSizedToContent() &&
+ this.strand_.isHeightSizedToContent())
+ this.addOtherListeners();
+ else {
+ this.strand_.addEventListener('heightChanged',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('widthChanged',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('sizeChanged',
+ goog.bind(this.sizeChangeHandler, this));
+ if (!isNaN(this.strand_.get_explicitWidth()) &&
+ !isNaN(this.strand_.get_explicitHeight()))
+ this.addOtherListeners();
+ }
this.strand_.element.style.display = 'block';
-
- this.changeHandler(null);
}
};
/**
- NonVirtualHorizontalLayout}
+ *
+ */
+org.apache.flex.html.beads.layouts.NonVirtualHorizontalLayout.
+ prototype.addOtherListeners = function() {
+ this.strand_.addEventListener('childrenAdded',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('layoutNeeded',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('itemsCreated',
+ goog.bind(this.changeHandler, this));
+};
+
+
+/**
+ * @param {org.apache.flex.events.Event} event The event.
+ */
+org.apache.flex.html.beads.layouts.NonVirtualHorizontalLayout.
+ prototype.sizeChangeHandler = function(event) {
+ this.addOtherListeners();
+ this.changeHandler(event);
+};
+
+
+/**
* @param {org.apache.flex.events.Event} event The text getter.
*/
org.apache.flex.html.beads.layouts.NonVirtualHorizontalLayout.
@@ -76,9 +105,11 @@ org.apache.flex.html.beads.layouts.NonVirtualHorizontalLayout.
n = children.length;
for (i = 0; i < n; i++)
{
- if (children[i].style.display == 'none')
- children[i].lastDisplay_ = 'inline-block';
+ var child = children[i];
+ if (child.style.display == 'none')
+ child.lastDisplay_ = 'inline-block';
else
- children[i].style.display = 'inline-block';
+ child.style.display = 'inline-block';
+ child.flexjs_wrapper.dispatchEvent('sizeChanged');
}
};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7e97921c/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualVerticalLayout.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualVerticalLayout.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualVerticalLayout.js
index 1828677..69e3362 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualVerticalLayout.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/layouts/NonVirtualVerticalLayout.js
@@ -48,15 +48,49 @@ org.apache.flex.html.beads.layouts.NonVirtualVerticalLayout.
prototype.set_strand = function(value) {
if (this.strand_ !== value) {
this.strand_ = value;
- this.strand_.addEventListener('childrenAdded',
- goog.bind(this.changeHandler, this));
- this.strand_.addEventListener('layoutNeeded',
- goog.bind(this.changeHandler, this));
+ if (this.strand_.isWidthSizedToContent() &&
+ this.strand_.isHeightSizedToContent())
+ this.addOtherListeners();
+ else {
+ this.strand_.addEventListener('heightChanged',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('widthChanged',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('sizeChanged',
+ goog.bind(this.sizeChangeHandler, this));
+ if (!isNaN(this.strand_.get_explicitWidth()) &&
+ !isNaN(this.strand_.get_explicitHeight()))
+ this.addOtherListeners();
+ }
}
};
/**
+ *
+ */
+org.apache.flex.html.beads.layouts.NonVirtualVerticalLayout.
+ prototype.addOtherListeners = function() {
+ this.strand_.addEventListener('childrenAdded',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('layoutNeeded',
+ goog.bind(this.changeHandler, this));
+ this.strand_.addEventListener('itemsCreated',
+ goog.bind(this.changeHandler, this));
+};
+
+
+/**
+ * @param {org.apache.flex.events.Event} event The event.
+ */
+org.apache.flex.html.beads.layouts.NonVirtualVerticalLayout.
+ prototype.sizeChangeHandler = function(event) {
+ this.addOtherListeners();
+ this.changeHandler(event);
+};
+
+
+/**
* @param {org.apache.flex.events.Event} event The text getter.
*/
org.apache.flex.html.beads.layouts.NonVirtualVerticalLayout.
@@ -67,10 +101,12 @@ org.apache.flex.html.beads.layouts.NonVirtualVerticalLayout.
n = children.length;
for (i = 0; i < n; i++)
{
- if (children[i].style.display === 'none') {
- children[i].lastDisplay_ = 'block';
+ var child = children[i];
+ if (child.style.display === 'none') {
+ child.lastDisplay_ = 'block';
} else {
- children[i].style.display = 'block';
+ child.style.display = 'block';
}
+ child.flexjs_wrapper.dispatchEvent('sizeChanged');
}
};