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 2013/06/14 18:52:59 UTC
[5/5] git commit: [flex-asjs] [refs/heads/develop] - changes needed
to support states in JS
changes needed to support states in JS
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/7a18c74a
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/7a18c74a
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/7a18c74a
Branch: refs/heads/develop
Commit: 7a18c74adf3df6401a04ce165396554bf3324657
Parents: 6cb30a9
Author: Alex Harui <ah...@apache.org>
Authored: Thu Jun 13 23:21:36 2013 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Jun 13 23:23:32 2013 -0700
----------------------------------------------------------------------
frameworks/as/src/FlexJSUIClasses.as | 1 +
.../org/apache/flex/core/SimpleStatesImpl.js | 24 +++++---
.../FlexJS/src/org/apache/flex/core/UIBase.js | 19 ++++--
.../FlexJS/src/org/apache/flex/core/ViewBase.js | 8 +--
.../org/apache/flex/events/ValueChangeEvent.js | 65 ++++++++++++++++++++
.../apache/flex/html/staticControls/Label.js | 4 +-
.../apache/flex/html/staticControls/TextArea.js | 6 +-
7 files changed, 106 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7a18c74a/frameworks/as/src/FlexJSUIClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/FlexJSUIClasses.as b/frameworks/as/src/FlexJSUIClasses.as
index 42b2c55..f91ab96 100644
--- a/frameworks/as/src/FlexJSUIClasses.as
+++ b/frameworks/as/src/FlexJSUIClasses.as
@@ -56,6 +56,7 @@ internal class FlexJSUIClasses
import org.apache.flex.events.CustomEvent; CustomEvent;
import org.apache.flex.events.Event; Event;
import org.apache.flex.utils.Timer; Timer;
+ import org.apache.flex.core.SimpleStatesImpl; SimpleStatesImpl;
}
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7a18c74a/frameworks/js/FlexJS/src/org/apache/flex/core/SimpleStatesImpl.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/SimpleStatesImpl.js b/frameworks/js/FlexJS/src/org/apache/flex/core/SimpleStatesImpl.js
index 6fbbd2f..4392257 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/SimpleStatesImpl.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/SimpleStatesImpl.js
@@ -49,12 +49,13 @@ org.apache.flex.core.SimpleStatesImpl.prototype.set_strand =
/**
* @protected
* @this {org.apache.flex.core.SimpleStatesImpl}
+ * @param {Object} event The event.
*/
org.apache.flex.core.SimpleStatesImpl.prototype.stateChangeHandler =
- function() {
+ function(event) {
var s, p;
var doc = event.target;
- var arr = doc.states;
+ var arr = doc.get_states();
for (p in arr)
{
s = arr[p];
@@ -83,7 +84,7 @@ org.apache.flex.core.SimpleStatesImpl.prototype.stateChangeHandler =
org.apache.flex.core.SimpleStatesImpl.prototype.revert = function(s) {
var p, o;
var arr = s.overrides;
- for (var p in arr)
+ for (p in arr)
{
o = arr[p];
if (o.type == 'AddItems')
@@ -93,7 +94,8 @@ org.apache.flex.core.SimpleStatesImpl.prototype.revert = function(s) {
var item = o.items[q];
var parent = o.document[o.destination];
item.removeFromParent(parent);
- parent.dispatchEvent(new Event('childrenAdded'));
+ parent.dispatchEvent(
+ new org.apache.flex.events.Event('childrenAdded'));
}
}
else if (o.type == 'SetProperty')
@@ -109,17 +111,20 @@ org.apache.flex.core.SimpleStatesImpl.prototype.revert = function(s) {
* @param {Object} s The State to apply.
*/
org.apache.flex.core.SimpleStatesImpl.prototype.apply = function(s) {
+ var o, p;
var arr = s.overrides;
- for (var p in arr)
+ for (p in arr)
{
o = arr[p];
if (o.type == 'AddItems')
{
if (o.items == null)
{
- var di = org.apache.flex.utils.MXMLDataInterpreter;
- o.items = di.generateMXMLArray(o.document,
- null, o.itemsDescriptor, true);
+ //TODO (aharui). This array should be deferred
+ //var di = org.apache.flex.utils.MXMLDataInterpreter;
+ //o.items = di.generateMXMLArray(o.document,
+ // null, o.itemsDescriptor, true);
+ o.items = o.itemsDescriptor;
}
for (var q in o.items)
{
@@ -137,7 +142,8 @@ org.apache.flex.core.SimpleStatesImpl.prototype.apply = function(s) {
{
item.addToParent(parent);
}
- parent.dispatchEvent(new Event('childrenAdded'));
+ parent.dispatchEvent(
+ new org.apache.flex.events.Event('childrenAdded'));
}
}
else if (o.type == 'SetProperty')
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7a18c74a/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 ca2a6eb..a88f1fe 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
@@ -56,7 +56,7 @@ org.apache.flex.core.UIBase.prototype.internalAddChild = function(child) {
*/
org.apache.flex.core.UIBase.prototype.internalAddChildAt =
function(child, index) {
- this.element.insertBefore(child, internalGetChildAt(index));
+ this.element.insertBefore(child, this.internalGetChildAt(index));
};
/**
@@ -75,7 +75,7 @@ org.apache.flex.core.UIBase.prototype.internalRemoveChild =
*/
org.apache.flex.core.UIBase.prototype.internalGetChildAt =
function(index) {
- return this.element.childNodex[index];
+ return this.element.childNodes[index];
};
/**
@@ -98,7 +98,11 @@ org.apache.flex.core.UIBase.prototype.addToParentAt = function(p, index) {
if (this.element == null)
this.element = document.createElement('div');
- p.internalAddChildAt(this.element);
+ var children = p.internalChildren();
+ if (index >= children.length)
+ p.internalAddChild(this.element);
+ else
+ p.internalAddChildAt(this.element, index);
};
/**
@@ -107,7 +111,14 @@ org.apache.flex.core.UIBase.prototype.addToParentAt = function(p, index) {
* @return {number} The index in parent.
*/
org.apache.flex.core.UIBase.prototype.getIndexInParent = function(p) {
- return p.internalGetChildIndex(this.element);
+ var children = p.internalChildren();
+ var n = children.length;
+ for (i = 0; i < n; i++)
+ {
+ if (children[i] == this.element)
+ return i;
+ }
+ return -1;
};
/**
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7a18c74a/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 9c22630..29af15c 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/ViewBase.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/ViewBase.js
@@ -16,8 +16,8 @@ goog.provide('org.apache.flex.core.ViewBase');
// TODO: (aharui) bring this in via CSS
goog.require('org.apache.flex.core.SimpleStatesImpl');
-
goog.require('org.apache.flex.core.UIBase');
+goog.require('org.apache.flex.events.ValueChangeEvent');
goog.require('org.apache.flex.utils.MXMLDataInterpreter');
@@ -141,7 +141,7 @@ org.apache.flex.core.ViewBase.prototype.hasState = function(state) {
* @return {string} The name of the current state.
*/
org.apache.flex.core.ViewBase.prototype.get_currentState = function() {
- return this.states_;
+ return this.currentState_;
};
/**
@@ -151,8 +151,8 @@ org.apache.flex.core.ViewBase.prototype.get_currentState = function() {
*/
org.apache.flex.core.ViewBase.prototype.set_currentState = function(value) {
var event = new org.apache.flex.events.ValueChangeEvent(
- 'currentStateChanged', false, false, this._currentState, value);
- this._currentState = value;
+ 'currentStateChanged', this.currentState_, value);
+ this.currentState_ = value;
this.dispatchEvent(event);
};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7a18c74a/frameworks/js/FlexJS/src/org/apache/flex/events/ValueChangeEvent.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/events/ValueChangeEvent.js b/frameworks/js/FlexJS/src/org/apache/flex/events/ValueChangeEvent.js
new file mode 100644
index 0000000..45240b6
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/events/ValueChangeEvent.js
@@ -0,0 +1,65 @@
+/**
+ * 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.
+ */
+
+goog.provide('org.apache.flex.events.ValueChangeEvent');
+
+goog.require('goog.events.Event');
+
+
+
+/**
+ * @constructor
+ * @extends {goog.events.Event}
+ * @param {string} type The event type.
+ * @param {string} ov The old value.
+ * @param {string} nv The new value.
+ */
+org.apache.flex.events.ValueChangeEvent = function(type, ov, nv) {
+ goog.base(this);
+
+ this.type = type;
+ this.oldValue = ov;
+ this.newValue = nv;
+};
+goog.inherits(org.apache.flex.events.ValueChangeEvent,
+ goog.events.Event);
+
+
+/**
+ * @expose
+ * @this {org.apache.flex.events.ValueChangeEvent}
+ * @param {string} type The event type.
+ */
+org.apache.flex.events.ValueChangeEvent.prototype.init = function(type) {
+ this.type = type;
+};
+
+
+/**
+ * @expose
+ * @type {string} type The event type.
+ */
+org.apache.flex.events.ValueChangeEvent.prototype.type = null;
+
+/**
+ * @expose
+ * @type {Object} oldValue The old value.
+ */
+org.apache.flex.events.ValueChangeEvent.prototype.oldValue = null;
+
+/**
+ * @expose
+ * @type {string} newValue The new value.
+ */
+org.apache.flex.events.ValueChangeEvent.prototype.newValue = null;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7a18c74a/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 c9fb63f..404f92a 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
@@ -24,8 +24,9 @@ goog.require('org.apache.flex.core.UIBase');
*/
org.apache.flex.html.staticControls.Label = function() {
goog.base(this);
-
+
this.element = document.createElement('div');
+ this.positioner = this.element;
};
goog.inherits(org.apache.flex.html.staticControls.Label,
org.apache.flex.core.UIBase);
@@ -39,7 +40,6 @@ goog.inherits(org.apache.flex.html.staticControls.Label,
org.apache.flex.html.staticControls.Label.prototype.addToParent = function(p) {
goog.base(this, 'addToParent', p);
- this.positioner = this.element;
};
/**
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7a18c74a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/TextArea.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/TextArea.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/TextArea.js
index 1ec8cb5..8b733b4 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/TextArea.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/TextArea.js
@@ -24,6 +24,10 @@ goog.require('org.apache.flex.core.UIBase');
*/
org.apache.flex.html.staticControls.TextArea = function() {
goog.base(this);
+
+ this.element = document.createElement('textarea');
+ this.positioner = this.element;
+
};
goog.inherits(org.apache.flex.html.staticControls.TextArea,
org.apache.flex.core.UIBase);
@@ -36,11 +40,9 @@ goog.inherits(org.apache.flex.html.staticControls.TextArea,
*/
org.apache.flex.html.staticControls.TextArea.prototype.addToParent =
function(p) {
- this.element = document.createElement('textarea');
p.internalAddChild(this.element);
- this.positioner = this.element;
this.element.flexjs_wrapper = this;
};