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 2015/04/15 23:43:28 UTC
[23/55] [abbrv] git commit: [flex-asjs] [refs/heads/develop] - move
handwritten JS code to final home. Build scripts still need fixing up
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/ViewBaseDataBinding.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/ViewBaseDataBinding.js b/frameworks/projects/Core/js/src/org/apache/flex/core/ViewBaseDataBinding.js
new file mode 100644
index 0000000..6271c0f
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/ViewBaseDataBinding.js
@@ -0,0 +1,345 @@
+/**
+ * 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_core_ViewBaseDataBinding');
+
+goog.require('org_apache_flex_binding_ConstantBinding');
+goog.require('org_apache_flex_binding_GenericBinding');
+goog.require('org_apache_flex_binding_PropertyWatcher');
+goog.require('org_apache_flex_binding_SimpleBinding');
+goog.require('org_apache_flex_events_Event');
+goog.require('org_apache_flex_events_ValueChangeEvent');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_core_ViewBaseDataBinding = function() {
+
+ /**
+ * @private
+ * @type {Object}
+ */
+ this.strand_ = null;
+
+ /**
+ * @protected
+ * @type {Object}
+ */
+ this.deferredBindings = {};
+
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_ViewBaseDataBinding.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'ViewBaseDataBinding',
+ qName: 'org_apache_flex_core_ViewBaseDataBinding'}] };
+
+
+Object.defineProperties(org_apache_flex_core_ViewBaseDataBinding.prototype, {
+ /** @expose */
+ strand: {
+ /** @this {org_apache_flex_core_ViewBaseDataBinding} */
+ set: function(value) {
+ if (this.strand_ !== value) {
+ this.strand_ = value;
+ this.strand_.addEventListener('initComplete',
+ goog.bind(this.initCompleteHandler, this));
+ }
+ }
+ }
+});
+
+
+/**
+ * @protected
+ * @param {Object} event The event.
+ */
+org_apache_flex_core_ViewBaseDataBinding.prototype.initCompleteHandler =
+ function(event) {
+
+ var prop;
+ var fieldWatcher;
+ var sb;
+ var bindingData = this.strand_._bindings;
+ var n = bindingData[0];
+ var bindings = [];
+ var i;
+ var binding;
+ var destination;
+ var index = 1;
+ for (i = 0; i < n; i++)
+ {
+ binding = {};
+ binding.source = bindingData[index++];
+ binding.destFunc = bindingData[index++];
+ binding.destination = bindingData[index++];
+ bindings.push(binding);
+ }
+ var watchers = this.decodeWatcher(bindingData.slice(index));
+ for (i = 0; i < n; i++)
+ {
+ binding = bindings[i];
+ // try to determine if it is an array
+ if (typeof(binding.source) == 'object' &&
+ typeof(binding.source.slice) == 'function')
+ {
+ if (binding.source[0] == 'applicationModel')
+ {
+ if (binding.source.length == 2 &&
+ binding.destination.length == 2)
+ {
+ // can be simplebinding or constantbinding
+ var modelWatcher =
+ watchers.watcherMap.applicationModel;
+ var childMap = modelWatcher.children.watcherMap;
+ fieldWatcher = childMap[binding.source[1]];
+ if (typeof(fieldWatcher.eventNames) == 'string')
+ {
+ sb = new org_apache_flex_binding_SimpleBinding();
+ sb.destinationPropertyName =
+ binding.destination[1];
+ sb.eventName = fieldWatcher.eventNames;
+ sb.sourceID = binding.source[0];
+ sb.sourcePropertyName = binding.source[1];
+ sb.setDocument(this.strand_);
+ prop = binding.destination[0];
+
+ destination = this.strand_[prop];
+
+ if (destination)
+ destination.addBead(sb);
+ else
+ {
+ this.deferredBindings[prop] =
+ sb;
+ this.strand_.addEventListener('valueChange',
+ goog.bind(this.deferredBindingsHandler, this));
+ }
+ }
+ else if (fieldWatcher.eventNames == null)
+ {
+ var cb;
+ cb = org_apache_flex_binding_ConstantBinding;
+ cb = new cb();
+ cb.destinationPropertyName =
+ binding.destination[1];
+ cb.sourceID = binding.source[0];
+ cb.sourcePropertyName = binding.source[1];
+ cb.setDocument(this.strand_);
+ prop = binding.destination[0];
+ destination = this.strand_[prop];
+
+ if (destination)
+ destination.addBead(cb);
+ else
+ {
+ this.deferredBindings[prop] =
+ cb;
+ this.strand_.addEventListener('valueChange',
+ this.deferredBindingsHandler);
+ }
+ }
+ }
+ }
+ }
+ else if (typeof(binding.source) == 'string')
+ {
+ fieldWatcher = watchers.watcherMap[binding.source];
+ if (typeof(fieldWatcher.eventNames) == 'string')
+ {
+ sb = new org_apache_flex_binding_SimpleBinding();
+ sb.destinationPropertyName = binding.destination[1];
+ sb.eventName = fieldWatcher.eventNames;
+ sb.sourcePropertyName = binding.source;
+ sb.setDocument(this.strand_);
+ prop = binding.destination[0];
+ destination = this.strand_[prop];
+
+ if (destination)
+ destination.addBead(sb);
+ else
+ {
+ this.deferredBindings[prop] = sb;
+ this.strand_.addEventListener('valueChange',
+ this.deferredBindingsHandler);
+ }
+ }
+ }
+ else
+ {
+ this.makeGenericBinding(binding, i, watchers);
+ }
+ }
+};
+
+
+/**
+ * @protected
+ * @param {Object} binding The binding object.
+ * @param {number} index The offset in the Binding database.
+ * @param {Object} watchers The database of Watchers.
+ */
+org_apache_flex_core_ViewBaseDataBinding.prototype.makeGenericBinding =
+ function(binding, index, watchers) {
+ var gb = new org_apache_flex_binding_GenericBinding();
+ gb.setDocument(this.strand_);
+ gb.destinationData = binding.destination;
+ gb.destinationFunction = binding.destFunc;
+ gb.source = binding.source;
+ this.setupWatchers(gb, index, watchers.watchers, null);
+};
+
+
+/**
+ * @protected
+ * @param {Object} gb The generic binding object.
+ * @param {number} index The offset in the Binding database.
+ * @param {Object} watchers The array of Watchers.
+ * @param {Object} parentWatcher The parent Watcher or null if top.
+ */
+org_apache_flex_core_ViewBaseDataBinding.prototype.setupWatchers =
+ function(gb, index, watchers, parentWatcher) {
+ var i, n;
+ n = watchers.length;
+ for (i = 0; i < n; i++)
+ {
+ var watcher = watchers[i];
+ if (watcher.bindings.indexOf(index) != -1)
+ {
+ var type = watcher.type;
+ switch (type)
+ {
+ case 'property':
+ {
+ var pw = new org_apache_flex_binding_PropertyWatcher(
+ this,
+ watcher.propertyName,
+ watcher.eventNames,
+ watcher.getterFunction);
+ watcher.watcher = pw;
+ if (parentWatcher)
+ pw.parentChanged(parentWatcher.value);
+ else
+ pw.parentChanged(this.strand_);
+ if (parentWatcher)
+ parentWatcher.addChild(pw);
+ if (watcher.children == null)
+ pw.addBinding(gb);
+ break;
+ }
+ }
+ if (watcher.children)
+ {
+ this.setupWatchers(gb, index, watcher.children,
+ watcher.watcher);
+ }
+ }
+ }
+};
+
+
+/**
+ * @protected
+ * @param {Object} bindingData The watcher data to decode.
+ * @return {Object} The watcher tree structure.
+ */
+org_apache_flex_core_ViewBaseDataBinding.prototype.decodeWatcher =
+ function(bindingData) {
+ var watcherMap = {};
+ var watchers = [];
+ var n = bindingData.length - 1; // there is an extra null because
+ // it is easier for the compiler
+ var index = 0;
+ var watcherData;
+ while (index < n)
+ {
+ var watcherIndex = bindingData[index++];
+ var type = bindingData[index++];
+ switch (type)
+ {
+ case 0:
+ {
+ watcherData = { type: 'function' };
+ watcherData.functionName = bindingData[index++];
+ watcherData.paramFunction = bindingData[index++];
+ watcherData.eventNames = bindingData[index++];
+ watcherData.bindings = bindingData[index++];
+ break;
+ }
+ case 1:
+ {
+ watcherData = { type: 'static' };
+ watcherData.propertyName = bindingData[index++];
+ watcherData.eventNames = bindingData[index++];
+ watcherData.bindings = bindingData[index++];
+ watcherData.getterFunction = bindingData[index++];
+ watcherData.parentObj = bindingData[index++];
+ watcherMap[watcherData.propertyName] = watcherData;
+ break;
+ }
+ case 2:
+ {
+ watcherData = { type: 'property' };
+ watcherData.propertyName = bindingData[index++];
+ watcherData.eventNames = bindingData[index++];
+ watcherData.bindings = bindingData[index++];
+ watcherData.getterFunction = bindingData[index++];
+ watcherMap[watcherData.propertyName] = watcherData;
+ break;
+ }
+ case 3:
+ {
+ watcherData = { type: 'xml' };
+ watcherData.propertyName = bindingData[index++];
+ watcherData.bindings = bindingData[index++];
+ watcherMap[watcherData.propertyName] = watcherData;
+ break;
+ }
+ }
+ watcherData.children = bindingData[index++];
+ if (watcherData.children != null)
+ {
+ watcherData.children = this.decodeWatcher(watcherData.children);
+ }
+ watcherData.index = watcherIndex;
+ watchers.push(watcherData);
+ }
+ return { watchers: watchers, watcherMap: watcherMap };
+};
+
+
+/**
+ * @protected
+ * @param {org_apache_flex_events_ValueChangeEvent} event The event.
+ */
+org_apache_flex_core_ViewBaseDataBinding.prototype.deferredBindingsHandler =
+ function(event) {
+ var p;
+ var destination;
+ for (p in this.deferredBindings)
+ {
+ if (p != event.propertyName) continue;
+ destination = this.strand_[p];
+ destination.addBead(this.deferredBindings[p]);
+ delete this.deferredBindings[p];
+ }
+};
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Circle.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Circle.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Circle.js
new file mode 100644
index 0000000..9dba559
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Circle.js
@@ -0,0 +1,101 @@
+/**
+ * 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_core_graphics_Circle');
+
+goog.require('org_apache_flex_core_graphics_GraphicShape');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GraphicShape}
+ */
+org_apache_flex_core_graphics_Circle = function() {
+ org_apache_flex_core_graphics_Circle.base(this, 'constructor');
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.radius_ = 0;
+};
+goog.inherits(org_apache_flex_core_graphics_Circle,
+ org_apache_flex_core_graphics_GraphicShape);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_Circle.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'Circle',
+ qName: 'org_apache_flex_core_graphics_Circle' }] };
+
+
+
+Object.defineProperties(org_apache_flex_core_graphics_Circle.prototype, {
+ /** @expose */
+ radius: {
+ /** @this {org_apache_flex_core_graphics_Circle} */
+ set: function(v) {
+ this.radius_ = v;
+ },
+ /** @this {org_apache_flex_core_graphics_Circle} */
+ get: function() {
+ return this.radius_;
+ }
+ }
+});
+
+
+/**
+ * @expose
+ * @param {number} x The x location of the center of the circle.
+ * @param {number} y The y location of the center of the circle.
+ * @param {number} radius The radius of the circle.
+ */
+org_apache_flex_core_graphics_Circle.prototype.drawCircle = function(x, y, radius) {
+ var style = this.getStyleStr();
+ var circle = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse');
+ circle.flexjs_wrapper = this;
+ circle.setAttribute('style', style);
+ if (this.stroke)
+ {
+ circle.setAttribute('cx', String(radius + this.stroke.weight));
+ circle.setAttribute('cy', String(radius + this.stroke.weight));
+ this.setPosition(x - radius, y - radius, this.stroke.weight, this.stroke.weight);
+ }
+ else
+ {
+ circle.setAttribute('cx', String(radius));
+ circle.setAttribute('cy', String(radius));
+ this.setPosition(x - radius, y - radius, 0, 0);
+ }
+
+ circle.setAttribute('rx', String(radius));
+ circle.setAttribute('ry', String(radius));
+ this.element.appendChild(circle);
+
+ this.resize(x, y, circle.getBBox());
+ };
+
+
+/**
+ * @override
+ */
+org_apache_flex_core_graphics_Circle.prototype.draw = function() {
+ this.drawCircle(this.x, this.y, this.radius);
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Ellipse.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Ellipse.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Ellipse.js
new file mode 100644
index 0000000..65469bb
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Ellipse.js
@@ -0,0 +1,80 @@
+/**
+ * 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_core_graphics_Ellipse');
+
+goog.require('org_apache_flex_core_graphics_GraphicShape');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GraphicShape}
+ */
+org_apache_flex_core_graphics_Ellipse = function() {
+ org_apache_flex_core_graphics_Ellipse.base(this, 'constructor');
+
+};
+goog.inherits(org_apache_flex_core_graphics_Ellipse,
+ org_apache_flex_core_graphics_GraphicShape);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_Ellipse.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'Ellipse',
+ qName: 'org_apache_flex_core_graphics_Ellipse' }] };
+
+
+/**
+ * @expose
+ * @param {number} x The x position of the top-left corner of the bounding box of the ellipse.
+ * @param {number} y The y position of the top-left corner of the bounding box of the ellipse.
+ * @param {number} width The width of the ellipse.
+ * @param {number} height The height of the ellipse.
+ */
+org_apache_flex_core_graphics_Ellipse.prototype.drawEllipse = function(x, y, width, height) {
+ var style = this.getStyleStr();
+ var ellipse = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse');
+ ellipse.flexjs_wrapper = this;
+ ellipse.setAttribute('style', style);
+ if (this.stroke)
+ {
+ ellipse.setAttribute('cx', String(width / 2 + this.stroke.weight));
+ ellipse.setAttribute('cy', String(height / 2 + this.stroke.weight));
+ this.setPosition(x, y, this.stroke.weight * 2, this.stroke.weight * 2);
+ }
+ else
+ {
+ ellipse.setAttribute('cx', String(width / 2));
+ ellipse.setAttribute('cy', String(height / 2));
+ this.setPosition(x, y, 0, 0);
+ }
+ ellipse.setAttribute('rx', String(width / 2));
+ ellipse.setAttribute('ry', String(height / 2));
+ this.element.appendChild(ellipse);
+
+ this.resize(x, y, ellipse.getBBox());
+ };
+
+
+/**
+ * @override
+*/
+org_apache_flex_core_graphics_Ellipse.prototype.draw = function() {
+ this.drawEllipse(this.x, this.y, this.width, this.height);
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientBase.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientBase.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientBase.js
new file mode 100644
index 0000000..3d66aaf
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientBase.js
@@ -0,0 +1,141 @@
+/**
+ * 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_graphics_GradientBase
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org_apache_flex_core_graphics_GradientBase');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_core_graphics_GradientBase = function() {
+};
+
+
+/**
+ * @protected
+ * @type {Array}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype.colors = [];
+
+
+/**
+ * @protected
+ * @type {Array}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype.ratios = [];
+
+
+/**
+ * @protected
+ * @type {Array}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype.alphas = [];
+
+
+/**
+ * @type {Array}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype._entries = [];
+
+
+/**
+ * @type {number}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype._rotation = 0.0;
+
+
+Object.defineProperties(org_apache_flex_core_graphics_GradientBase.prototype, {
+ /** @expose */
+ entries: {
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ get: function() {
+ return this._entries;
+ },
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ set: function(value) {
+ this._entries = value;
+ }
+ },
+ /** @expose */
+ rotation: {
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ get: function() {
+ return this._rotation;
+ },
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ set: function(value) {
+ this._rotation = value;
+ }
+ },
+ /** @expose */
+ x: {
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ get: function() {
+ return this._x;
+ },
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ set: function(value) {
+ this._x = value;
+ }
+ },
+ /** @expose */
+ y: {
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ set: function(value) {
+ this._y = value;
+ },
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ get: function() {
+ return this._y;
+ }
+ },
+ /** @expose */
+ newId: {
+ /** @this {org_apache_flex_core_graphics_GradientBase} */
+ get: function() {
+ return 'gradient' + String(Math.floor((Math.random() * 100000) + 1));
+ }
+ }
+});
+
+
+/**
+ * @type {number}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype._x = 0;
+
+
+/**
+ * @type {number}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype._y = 0;
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_GradientBase.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'GradientBase', qName: 'org_apache_flex_core_graphics_GradientBase'}]
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientEntry.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientEntry.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientEntry.js
new file mode 100644
index 0000000..632a4ed
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GradientEntry.js
@@ -0,0 +1,126 @@
+/**
+ * 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_graphics_GradientEntry
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org_apache_flex_core_graphics_GradientEntry');
+
+
+
+/**
+ * @constructor
+ * @param {number} alpha
+ * @param {number} color
+ * @param {number} ratio
+ */
+org_apache_flex_core_graphics_GradientEntry = function(alpha, color, ratio) {
+ this._alpha = alpha;
+ this._color = color;
+ this._ratio = ratio;
+};
+
+
+/**
+ * @type {number}
+ */
+org_apache_flex_core_graphics_GradientEntry.prototype._alpha = 1.0;
+
+
+/**
+ * @type {number}
+ */
+org_apache_flex_core_graphics_GradientEntry.prototype._color = 0x000000;
+
+
+/**
+ * @type {number}
+ */
+org_apache_flex_core_graphics_GradientEntry.prototype._ratio = 0x000000;
+
+
+Object.defineProperties(org_apache_flex_core_graphics_GradientEntry.prototype, {
+ /** @expose */
+ alpha: {
+ /** @this {org_apache_flex_core_graphics_GradientEntry} */
+ get: function() {
+ return this._alpha;
+ },
+ /** @this {org_apache_flex_core_graphics_GradientEntry} */
+ set: function(value) {
+ var /** @type {number} */ oldValue = this._alpha;
+ if (value != oldValue) {
+ this._alpha = value;
+ }
+ }
+ },
+ /** @expose */
+ color: {
+ /** @this {org_apache_flex_core_graphics_GradientEntry} */
+ get: function() {
+ return this._color;
+ },
+ /** @this {org_apache_flex_core_graphics_GradientEntry} */
+ set: function(value) {
+ var /** @type {number} */ oldValue = this._color;
+ if (value != oldValue) {
+ this._color = value;
+ }
+ }
+ },
+ /** @expose */
+ ratio: {
+ /** @this {org_apache_flex_core_graphics_GradientEntry} */
+ get: function() {
+ return this._ratio;
+ },
+ /** @this {org_apache_flex_core_graphics_GradientEntry} */
+ set: function(value) {
+ this._ratio = value;
+ }
+ }
+});
+
+
+/**
+ * @expose
+ * @param {org_apache_flex_core_graphics_GraphicShape} s
+ */
+org_apache_flex_core_graphics_GradientEntry.prototype.begin = function(s) {
+ s.graphics.beginFill(this.color, this.alpha);
+};
+
+
+/**
+ * @expose
+ * @param {org_apache_flex_core_graphics_GraphicShape} s
+ */
+org_apache_flex_core_graphics_GradientEntry.prototype.end = function(s) {
+ s.graphics.endFill();
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_GradientEntry.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'GradientEntry', qName: 'org_apache_flex_core_graphics_GradientEntry'}]
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicShape.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicShape.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicShape.js
new file mode 100644
index 0000000..4f6851c
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicShape.js
@@ -0,0 +1,204 @@
+/**
+ * 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_core_graphics_GraphicShape');
+goog.require('org_apache_flex_core_UIBase');
+goog.require('org_apache_flex_core_graphics_SolidColor');
+goog.require('org_apache_flex_core_graphics_SolidColorStroke');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_UIBase}
+ */
+org_apache_flex_core_graphics_GraphicShape = function() {
+
+ org_apache_flex_core_graphics_GraphicShape.base(this, 'constructor');
+
+ /**
+ * @private
+ * @type {org_apache_flex_core_graphics_IFill}
+ */
+ this.fill_ = null;
+
+ /**
+ * @private
+ * @type {org_apache_flex_core_graphics_IStroke}
+ */
+ this.stroke_ = null;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.x_ = 0;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.y_ = 0;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.xOffset_ = 0;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.yOffset_ = 0;
+
+ /**
+ * @expose
+ * @type {SVGElement}
+ */
+ this.element = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+ this.element.flexjs_wrapper = this;
+ this.element.offsetLeft = 0;
+ this.element.offsetTop = 0;
+ this.element.offsetParent = null;
+ this.positioner = this.element;
+};
+goog.inherits(org_apache_flex_core_graphics_GraphicShape,
+ org_apache_flex_core_UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_GraphicShape.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'GraphicShape',
+ qName: 'org_apache_flex_core_graphics_GraphicShape' }] };
+
+
+Object.defineProperties(org_apache_flex_core_graphics_GraphicShape.prototype, {
+ /** @expose */
+ fill: {
+ /** @this {org_apache_flex_core_graphics_GraphicShape} */
+ get: function() {
+ return this.fill_;
+ },
+ /** @this {org_apache_flex_core_graphics_GraphicShape} */
+ set: function(value) {
+ this.fill_ = value;
+ }
+ },
+ stroke: {
+ /** @this {org_apache_flex_core_graphics_GraphicShape} */
+ get: function() {
+ return this.stroke_;
+ },
+ /** @this {org_apache_flex_core_graphics_GraphicShape} */
+ set: function(value) {
+ this.stroke_ = value;
+ }
+ }
+});
+
+
+/**
+ *
+ */
+org_apache_flex_core_graphics_GraphicShape.prototype.addedToParent = function() {
+ this.draw();
+ this.element.style.overflow = 'visible';
+ /*
+ * not sure this is valuable any longer
+ var bbox = this.element.getBBox();
+ if (bbox.width === 0 && !isNaN(this.width)) bbox.width = this.width;
+ if (bbox.height === 0 && !isNaN(this.height)) bbox.height = this.height;
+ this.resize(this.x, this.y, bbox);*/
+};
+
+
+/**
+ * This is where the drawing methods get called from.
+ */
+org_apache_flex_core_graphics_GraphicShape.prototype.draw = function() {
+ //Overwrite in subclass
+};
+
+
+/**
+ * @expose
+ * @return {string} The style attribute.
+ */
+org_apache_flex_core_graphics_GraphicShape.prototype.getStyleStr = function() {
+ var fillStr;
+ if (this.fill)
+ {
+ fillStr = this.fill.addFillAttrib(this);
+ }
+ else
+ {
+ fillStr = 'fill:none';
+ }
+
+ var strokeStr;
+ if (this.stroke)
+ {
+ strokeStr = this.stroke.addStrokeAttrib(this);
+ }
+ else
+ {
+ strokeStr = 'stroke:none';
+ }
+
+
+ return fillStr + ';' + strokeStr;
+};
+
+
+/**
+ * @expose
+ * @param {number} x X position.
+ * @param {number} y Y position.
+ * @param {Object} bbox The bounding box of the svg element.
+ */
+org_apache_flex_core_graphics_GraphicShape.prototype.resize = function(x, y, bbox) {
+ var width = Math.max(this.width, bbox.width);
+ var height = Math.max(this.height, bbox.height);
+
+ this.element.style.position = 'absolute';
+ if (!isNaN(x)) this.element.style.top = String(x) + 'px';
+ if (!isNaN(y)) this.element.style.left = String(y) + 'px';
+ this.element.style.width = String(width) + 'px';
+ this.element.style.height = String(height) + 'px';
+ this.element.offsetLeft = x;
+ this.element.offsetTop = y;
+};
+
+
+/**
+ * @expose
+ * @param {number} x X position.
+ * @param {number} y Y position.
+ * @param {number} xOffset offset from x position.
+ * @param {number} yOffset offset from y position.
+ */
+org_apache_flex_core_graphics_GraphicShape.prototype.setPosition = function(x, y, xOffset, yOffset) {
+ this.x_ = x;
+ this.y_ = y;
+ this.xOffset_ = xOffset;
+ this.yOffset_ = yOffset;
+ this.element.offsetLeft = xOffset;
+ this.element.offsetTop = yOffset;
+};
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicsContainer.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicsContainer.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicsContainer.js
new file mode 100644
index 0000000..b5ec97f
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/GraphicsContainer.js
@@ -0,0 +1,232 @@
+/**
+ * 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_core_graphics_GraphicsContainer');
+
+goog.require('org_apache_flex_core_graphics_GraphicShape');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GraphicShape}
+ */
+org_apache_flex_core_graphics_GraphicsContainer = function() {
+ org_apache_flex_core_graphics_GraphicsContainer.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_core_graphics_GraphicsContainer, org_apache_flex_core_graphics_GraphicShape);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'GraphicsContainer',
+ qName: 'org_apache_flex_core_graphics_GraphicsContainer'}] };
+
+
+/**
+ * @expose
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.removeAllElements = function() {
+ var svg = this.element;
+ while (svg.lastChild) {
+ svg.removeChild(svg.lastChild);
+ }
+};
+
+
+Object.defineProperties(org_apache_flex_core_graphics_GraphicsContainer.prototype, {
+ /** @expose */
+ numChildren: {
+ /** @this {org_apache_flex_core_graphics_GraphicsContainer} */
+ get: function() {
+ return this.internalChildren().length;
+ }
+ },
+ /** @expose */
+ width: {
+ /** @this {org_apache_flex_core_graphics_GraphicsContainer} */
+ set: function(value) {
+ org_apache_flex_utils_Language.superSetter(
+ org_apache_flex_core_graphics_GraphicsContainer, this, 'width', value);
+ this.element.setAttribute('width', String(value) + 'px');
+ this.element.style.width = String(value) + 'px';
+ }
+ },
+ /** @expose */
+ height: {
+ /** @this {org_apache_flex_core_graphics_GraphicsContainer} */
+ set: function(value) {
+ org_apache_flex_utils_Language.superSetter(
+ org_apache_flex_core_graphics_GraphicsContainer, this, 'height', value);
+ this.element.setAttribute('height', String(value) + 'px');
+ this.element.style.height = String(value) + 'px';
+ }
+ },
+ /** @expose */
+ x: {
+ /** @this {org_apache_flex_core_graphics_GraphicsContainer} */
+ set: function(value) {
+ org_apache_flex_utils_Language.superSetter(
+ org_apache_flex_core_graphics_GraphicsContainer, this, 'x', value);
+ this.element.setAttribute('x', String(value) + 'px');
+ this.element.style.position = 'absolute';
+ this.element.style.left = String(value) + 'px';
+ this.element.offsetLeft = value;
+ }
+ },
+ /** @expose */
+ y: {
+ /** @this {org_apache_flex_core_graphics_GraphicsContainer} */
+ set: function(value) {
+ org_apache_flex_utils_Language.superSetter(
+ org_apache_flex_core_graphics_GraphicsContainer, this, 'y', value);
+ this.element.setAttribute('y', String(value) + 'px');
+ this.element.style.position = 'absolute';
+ this.element.style.top = String(value) + 'px';
+ this.element.offsetTop = value;
+ }
+ }
+});
+
+
+/**
+ * @expose
+ * @param {number} x The x position of the top-left corner of the rectangle.
+ * @param {number} y The y position of the top-left corner.
+ * @param {number} width The width of the rectangle.
+ * @param {number} height The height of the rectangle.
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.drawRect = function(x, y, width, height) {
+ var style = this.getStyleStr();
+ var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
+ rect.flexjs_wrapper = this;
+ rect.offsetLeft = x;
+ rect.offsetTop = y;
+ rect.offsetParent = this;
+ rect.setAttribute('style', style);
+ rect.setAttribute('x', String(x) + 'px');
+ rect.setAttribute('y', String(y) + 'px');
+ rect.setAttribute('width', String(width) + 'px');
+ rect.setAttribute('height', String(height) + 'px');
+ this.element.appendChild(rect);
+};
+
+
+/**
+ * @expose
+ * @param {number} x The x position of the top-left corner of the bounding box of the ellipse.
+ * @param {number} y The y position of the top-left corner of the bounding box of the ellipse.
+ * @param {number} width The width of the ellipse.
+ * @param {number} height The height of the ellipse.
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.drawEllipse = function(x, y, width, height) {
+ var style = this.getStyleStr();
+ var ellipse = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse');
+ ellipse.flexjs_wrapper = this;
+ ellipse.offsetLeft = x;
+ ellipse.offsetTop = y;
+ ellipse.offsetParent = this;
+ ellipse.setAttribute('style', style);
+ ellipse.setAttribute('cx', String(x + width / 2));
+ ellipse.setAttribute('cy', String(y + height / 2));
+ ellipse.setAttribute('rx', String(width / 2));
+ ellipse.setAttribute('ry', String(height / 2));
+ this.element.appendChild(ellipse);
+};
+
+
+/**
+ * @expose
+ * @param {number} x The x location of the center of the circle.
+ * @param {number} y The y location of the center of the circle.
+ * @param {number} radius The radius of the circle.
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.drawCircle = function(x, y, radius) {
+ var style = this.getStyleStr();
+ var circle = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse');
+ circle.flexjs_wrapper = this;
+ circle.offsetLeft = x;
+ circle.offsetTop = y;
+ circle.offsetParent = this;
+ circle.setAttribute('style', style);
+ circle.setAttribute('cx', String(x));
+ circle.setAttribute('cy', String(y));
+ circle.setAttribute('rx', String(radius));
+ circle.setAttribute('ry', String(radius));
+ this.element.appendChild(circle);
+};
+
+
+/**
+ * @expose
+ * @param {string} data A string containing a compact represention of the path segments.
+ * The value is a space-delimited string describing each path segment. Each
+ * segment entry has a single character which denotes the segment type and
+ * two or more segment parameters.
+ *
+ * If the segment command is upper-case, the parameters are absolute values.
+ * If the segment command is lower-case, the parameters are relative values.
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.drawPath = function(data) {
+ var style = this.getStyleStr();
+ var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
+ path.flexjs_wrapper = this;
+ path.offsetLeft = 0;
+ path.offsetTop = 0;
+ path.offsetParent = this;
+ path.setAttribute('style', style);
+ path.setAttribute('d', data);
+ this.element.appendChild(path);
+};
+
+
+/**
+ * @expose
+ * @param {string} value The text string to draw.
+ * @param {number} x The x position of the text.
+ * @param {number} y The y position of the text.
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.drawText = function(value, x, y) {
+ var style = this.getStyleStr();
+ var text = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+ text.flexjs_wrapper = this;
+ text.offsetLeft = x;
+ text.offsetTop = y;
+ text.offsetParent = this;
+ text.setAttribute('style', style);
+ text.setAttribute('x', String(x) + 'px');
+ text.setAttribute('y', String(y + 15) + 'px');
+ var textNode = document.createTextNode(value);
+ text.appendChild(textNode);
+ this.element.appendChild(text);
+};
+
+
+/**
+ * @expose
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.drawLine = function() {
+};
+
+
+/**
+ * @expose
+ */
+org_apache_flex_core_graphics_GraphicsContainer.prototype.drawPolygon = function() {
+};
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IFill.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IFill.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IFill.js
new file mode 100644
index 0000000..ac572d7
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IFill.js
@@ -0,0 +1,52 @@
+/**
+ * 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_graphics_IFill');
+
+
+
+/**
+ * IFill
+ *
+ * @interface
+ */
+org_apache_flex_core_graphics_IFill = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_IFill.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'IFill',
+ qName: 'org_apache_flex_core_graphics_IFill' }] };
+
+
+/**
+ * addFillAttrib()
+ *
+ * @expose
+ * @param {org_apache_flex_core_graphics_GraphicShape} value The GraphicShape object on which the fill must be added.
+ * @return {string} The fill style attribute.
+ */
+org_apache_flex_core_graphics_IFill.prototype.addFillAttrib =
+ function(value) {};
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IStroke.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IStroke.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IStroke.js
new file mode 100644
index 0000000..398b4e6
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/IStroke.js
@@ -0,0 +1,52 @@
+/**
+ * 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_graphics_IStroke');
+
+
+
+/**
+ * IStroke
+ *
+ * @interface
+ */
+org_apache_flex_core_graphics_IStroke = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_IStroke.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'IStroke',
+ qName: 'org_apache_flex_core_graphics_IStroke' }] };
+
+
+/**
+ * addStrokeAttrib()
+ *
+ * @expose
+ * @param {org_apache_flex_core_graphics_GraphicShape} value The GraphicShape object on which the stroke must be added.
+ * @return {string} The stroke style attribute.
+ */
+org_apache_flex_core_graphics_IStroke.prototype.addStrokeAttrib =
+ function(value) {};
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Line.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Line.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Line.js
new file mode 100644
index 0000000..b45f8d7
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Line.js
@@ -0,0 +1,79 @@
+/**
+ * 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_core_graphics_Line');
+
+goog.require('org_apache_flex_core_graphics_GraphicShape');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GraphicShape}
+ */
+org_apache_flex_core_graphics_Line = function() {
+ org_apache_flex_core_graphics_Line.base(this, 'constructor');
+
+};
+goog.inherits(org_apache_flex_core_graphics_Line,
+ org_apache_flex_core_graphics_GraphicShape);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_Line.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'Line',
+ qName: 'org_apache_flex_core_graphics_Line' }] };
+
+
+/**
+ * @expose
+ * @param {number} x1 The x1 attribute defines the start of the line on the x-axis.
+ * @param {number} y1 The y1 attribute defines the start of the line on the y-axis.
+ * @param {number} x2 The x2 attribute defines the end of the line on the x-axis.
+ * @param {number} y2 The y2 attribute defines the end of the line on the y-axis.
+ */
+org_apache_flex_core_graphics_Line.prototype.drawLine = function(x1, y1, x2, y2) {
+ var style = this.getStyleStr();
+ var line = document.createElementNS('http://www.w3.org/2000/svg', 'line');
+ line.flexjs_wrapper = this;
+ line.setAttribute('style', style);
+ line.setAttribute('x1', 0);
+ line.setAttribute('y1', y1);
+ line.setAttribute('x2', x2 - x1);
+ line.setAttribute('y2', y2);
+ this.setPosition(x1, y2, this.stroke.weight, this.stroke.weight);
+ this.element.appendChild(line);
+
+ this.resize(x, y, line.getBBox());
+ };
+
+
+/**
+ * @override
+ * @expose
+ * @param {number} x X position.
+ * @param {number} y Y position.
+ * @param {Object} bbox The bounding box of the svg element.
+ */
+org_apache_flex_core_graphics_Line.prototype.resize = function(x, y, bbox) {
+ this.element.setAttribute('width', String(bbox.width) + 'px');
+ this.element.setAttribute('height', String(bbox.height) + 'px');
+
+ this.element.setAttribute('style', 'position:absolute; left:' + String(x + bbox.x - this.xOffset_) +
+ 'px; top:' + String(bbox.y - this.yOffset_) + 'px;');
+};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/LinearGradient.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/LinearGradient.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/LinearGradient.js
new file mode 100644
index 0000000..5711ffc
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/LinearGradient.js
@@ -0,0 +1,125 @@
+/**
+ * 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_graphics_LinearGradient
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org_apache_flex_core_graphics_LinearGradient');
+goog.require('org_apache_flex_core_graphics_GradientBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GradientBase}
+ * @implements {org_apache_flex_core_graphics_IFill}
+ */
+org_apache_flex_core_graphics_LinearGradient = function() {
+ org_apache_flex_core_graphics_LinearGradient.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_core_graphics_LinearGradient, org_apache_flex_core_graphics_GradientBase);
+
+
+/**
+ * @type {number}
+ */
+org_apache_flex_core_graphics_LinearGradient.prototype._scaleX = 1.0;
+
+
+Object.defineProperties(org_apache_flex_core_graphics_LinearGradient.prototype, {
+ /** @expose */
+ scaleX: {
+ /** @this {org_apache_flex_core_graphics_LinearGradient} */
+ get: function() {
+ return this._scaleX;
+ },
+ /** @this {org_apache_flex_core_graphics_LinearGradient} */
+ set: function(value) {
+ this._scaleX = value;
+ }
+ }
+});
+
+
+/**
+ * addFillAttrib()
+ *
+ * @expose
+ * @param {org_apache_flex_core_graphics_GraphicShape} value The GraphicShape object on which the fill must be added.
+ * @return {string}
+ */
+org_apache_flex_core_graphics_LinearGradient.prototype.addFillAttrib = function(value) {
+ //Create and add a linear gradient def
+ var svgNS = value.element.namespaceURI;
+ var grad = document.createElementNS(svgNS, 'linearGradient');
+ var gradientId = this.newId;
+ grad.setAttribute('id', gradientId);
+
+ //Set x1, y1, x2, y2 of gradient
+ grad.setAttribute('x1', '0%');
+ grad.setAttribute('y1', '0%');
+ grad.setAttribute('x2', '100%');
+ grad.setAttribute('y2', '0%');
+
+ //Apply rotation to the gradient if rotation is a number
+ if (this.rotation)
+ {
+ grad.setAttribute('gradientTransform', 'rotate(' + this.rotation + ' 0.5 0.5)');
+ }
+
+ //Process gradient entries and create a stop for each entry
+ var entries = this.entries;
+ for (var i = 0; i < entries.length; i++)
+ {
+ var gradientEntry = entries[i];
+ var stop = document.createElementNS(svgNS, 'stop');
+ //Set Offset
+ stop.setAttribute('offset', String(gradientEntry.ratio * 100) + '%');
+ //Set Color
+ var color = Number(gradientEntry.color).toString(16);
+ if (color.length == 1) color = '00' + color;
+ if (color.length == 2) color = '00' + color;
+ if (color.length == 4) color = '00' + color;
+ stop.setAttribute('stop-color', '#' + String(color));
+ //Set Alpha
+ stop.setAttribute('stop-opacity', String(gradientEntry.alpha));
+
+ grad.appendChild(stop);
+ }
+
+ //Add defs element if not available already
+ //Add newly created gradient to defs element
+ var defs = value.element.querySelector('defs') ||
+ value.element.insertBefore(document.createElementNS(svgNS, 'defs'), value.element.firstChild);
+ defs.appendChild(grad);
+
+ //Return the fill attribute
+ return 'fill:url(#' + gradientId + ')';
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_LinearGradient.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'LinearGradient', qName: 'org_apache_flex_core_graphics_LinearGradient'}],
+ interfaces: [org_apache_flex_core_graphics_IFill]
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Path.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Path.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Path.js
new file mode 100644
index 0000000..1a8c04c
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Path.js
@@ -0,0 +1,101 @@
+/**
+ * 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_core_graphics_Path');
+
+goog.require('org_apache_flex_core_graphics_GraphicShape');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GraphicShape}
+ */
+org_apache_flex_core_graphics_Path = function() {
+ org_apache_flex_core_graphics_Path.base(this, 'constructor');
+
+ /**
+ * @private
+ * @type {string}
+ */
+ this.data_ = '';
+};
+goog.inherits(org_apache_flex_core_graphics_Path,
+ org_apache_flex_core_graphics_GraphicShape);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_Path.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'Path',
+ qName: 'org_apache_flex_core_graphics_Path' }] };
+
+
+Object.defineProperties(org_apache_flex_core_graphics_Path.prototype, {
+ /** @expose */
+ data: {
+ /** @this {org_apache_flex_core_graphics_Path} */
+ set: function(v) {
+ this.data_ = v;
+ },
+ /** @this {org_apache_flex_core_graphics_Path} */
+ get: function() {
+ return this.data_;
+ }
+ }
+});
+
+
+/**
+ * @expose
+ * @param {number} x The x location of the Path.
+ * @param {number} y The y location of the Path.
+ * @param {string} data A string containing a compact represention of the path segments.
+ * The value is a space-delimited string describing each path segment. Each
+ * segment entry has a single character which denotes the segment type and
+ * two or more segment parameters.
+ *
+ * If the segment command is upper-case, the parameters are absolute values.
+ * If the segment command is lower-case, the parameters are relative values.
+ */
+org_apache_flex_core_graphics_Path.prototype.drawPath = function(x, y, data) {
+ if (data == null || data.length === 0) return;
+ var style = this.getStyleStr();
+ var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
+ path.flexjs_wrapper = this;
+ path.setAttribute('style', style);
+ path.setAttribute('d', data);
+ this.element.appendChild(path);
+ if (this.stroke)
+ {
+ this.setPosition(x, y, this.stroke.weight, this.stroke.weight);
+ }
+ else
+ {
+ this.setPosition(x, y, 0, 0);
+ }
+
+ this.resize(x, y, path.getBBox());
+ };
+
+
+ /**
+ * @override
+ */
+org_apache_flex_core_graphics_Path.prototype.draw = function() {
+ this.drawPath(this.x, this.y, this.data);
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Rect.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Rect.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Rect.js
new file mode 100644
index 0000000..2a3c849
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Rect.js
@@ -0,0 +1,80 @@
+/**
+ * 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_core_graphics_Rect');
+
+goog.require('org_apache_flex_core_graphics_GraphicShape');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GraphicShape}
+ */
+org_apache_flex_core_graphics_Rect = function() {
+ org_apache_flex_core_graphics_Rect.base(this, 'constructor');
+
+};
+goog.inherits(org_apache_flex_core_graphics_Rect,
+ org_apache_flex_core_graphics_GraphicShape);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_Rect.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'Rect',
+ qName: 'org_apache_flex_core_graphics_Rect' }] };
+
+
+/**
+ * @expose
+ * @param {number} x The x position of the top-left corner of the rectangle.
+ * @param {number} y The y position of the top-left corner.
+ * @param {number} width The width of the rectangle.
+ * @param {number} height The height of the rectangle.
+ */
+org_apache_flex_core_graphics_Rect.prototype.drawRect = function(x, y, width, height) {
+ var style = this.getStyleStr();
+ var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
+ rect.flexjs_wrapper = this;
+ rect.setAttribute('style', style);
+ if (this.stroke)
+ {
+ rect.setAttribute('x', String(this.stroke.weight / 2) + 'px');
+ rect.setAttribute('y', String(this.stroke.weight / 2) + 'px');
+ this.setPosition(x, y, this.stroke.weight, this.stroke.weight);
+ }
+ else
+ {
+ rect.setAttribute('x', '0' + 'px');
+ rect.setAttribute('y', '0' + 'px');
+ this.setPosition(x, y, 0, 0);
+ }
+ rect.setAttribute('width', String(width) + 'px');
+ rect.setAttribute('height', String(height) + 'px');
+ this.element.appendChild(rect);
+
+ this.resize(x, y, rect.getBBox());
+ };
+
+
+/**
+ * @override
+*/
+org_apache_flex_core_graphics_Rect.prototype.draw = function() {
+ this.drawRect(this.x, this.y, this.width, this.height);
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColor.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColor.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColor.js
new file mode 100644
index 0000000..d534260
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColor.js
@@ -0,0 +1,92 @@
+/**
+ * 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_core_graphics_SolidColor');
+goog.require('org_apache_flex_core_graphics_IFill');
+
+
+
+/**
+ * @constructor
+ * @implements {org_apache_flex_core_graphics_IFill}
+ */
+org_apache_flex_core_graphics_SolidColor = function() {
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.alpha_ = 1.0;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.color_ = 1.0;
+
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_SolidColor.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'SolidColor',
+ qName: 'org_apache_flex_core_graphics_SolidColor' }],
+ interfaces: [org_apache_flex_core_graphics_IFill] };
+
+
+Object.defineProperties(org_apache_flex_core_graphics_SolidColor.prototype, {
+ /** @expose */
+ color: {
+ /** @this {org_apache_flex_core_graphics_SolidColor} */
+ get: function() {
+ return this.color_;
+ },
+ /** @this {org_apache_flex_core_graphics_SolidColor} */
+ set: function(value) {
+ this.color_ = value;
+ }
+ },
+ /** @expose */
+ alpha: {
+ /** @this {org_apache_flex_core_graphics_SolidColor} */
+ get: function() {
+ return this.alpha_;
+ },
+ /** @this {org_apache_flex_core_graphics_SolidColor} */
+ set: function(value) {
+ this.alpha_ = value;
+ }
+ }
+});
+
+
+/**
+ * addFillAttrib()
+ *
+ * @expose
+ * @param {org_apache_flex_core_graphics_GraphicShape} value The GraphicShape object on which the fill must be added.
+ * @return {string}
+ */
+org_apache_flex_core_graphics_SolidColor.prototype.addFillAttrib = function(value) {
+ var color = Number(this.color).toString(16);
+ if (color.length == 1) color = '00' + color;
+ if (color.length == 2) color = '00' + color;
+ if (color.length == 4) color = '00' + color;
+ return 'fill:#' + String(color) + ';fill-opacity:' + String(this.alpha);
+};
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColorStroke.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColorStroke.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColorStroke.js
new file mode 100644
index 0000000..1ce52f6
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/SolidColorStroke.js
@@ -0,0 +1,109 @@
+/**
+ * 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_core_graphics_SolidColorStroke');
+goog.require('org_apache_flex_core_graphics_IStroke');
+
+
+
+/**
+ * @constructor
+ * @implements {org_apache_flex_core_graphics_IStroke}
+ *
+ */
+org_apache_flex_core_graphics_SolidColorStroke = function() {
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.alpha_ = 1.0;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.color_ = 1.0;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.weight_ = 1.0;
+
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_SolidColorStroke.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'SolidColorStroke',
+ qName: 'org_apache_flex_core_graphics_SolidColorStroke' }] };
+
+
+Object.defineProperties(org_apache_flex_core_graphics_SolidColorStroke.prototype, {
+ /** @expose */
+ color: {
+ /** @this {org_apache_flex_core_graphics_SolidColorStroke} */
+ get: function() {
+ return this.color_;
+ },
+ /** @this {org_apache_flex_core_graphics_SolidColorStroke} */
+ set: function(value) {
+ this.color_ = value;
+ }
+ },
+ /** @expose */
+ alpha: {
+ /** @this {org_apache_flex_core_graphics_SolidColorStroke} */
+ get: function() {
+ return this.alpha_;
+ },
+ /** @this {org_apache_flex_core_graphics_SolidColorStroke} */
+ set: function(value) {
+ this.alpha_ = value;
+ }
+ },
+ /** @expose */
+ weight: {
+ /** @this {org_apache_flex_core_graphics_SolidColorStroke} */
+ get: function() {
+ return this.weight_;
+ },
+ /** @this {org_apache_flex_core_graphics_SolidColorStroke} */
+ set: function(value) {
+ this.weight_ = value;
+ }
+ }
+});
+
+
+/**
+ * addStrokeAttrib()
+ *
+ * @expose
+ * @param {org_apache_flex_core_graphics_GraphicShape} value The GraphicShape object on which the stroke must be added.
+ * @return {string}
+ */
+org_apache_flex_core_graphics_SolidColorStroke.prototype.addStrokeAttrib = function(value) {
+ var strokeColor = Number(this.color).toString(16);
+ if (strokeColor.length == 1) strokeColor = '00' + strokeColor;
+ if (strokeColor.length == 2) strokeColor = '00' + strokeColor;
+ if (strokeColor.length == 4) strokeColor = '00' + strokeColor;
+ return 'stroke:#' + String(strokeColor) + ';stroke-width:' +
+ String(this.weight) + ';stroke-opacity:' + String(this.alpha);
+ };
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Text.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Text.js b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Text.js
new file mode 100644
index 0000000..80afbda
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/graphics/Text.js
@@ -0,0 +1,70 @@
+/**
+ * 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_core_graphics_Text');
+
+goog.require('org_apache_flex_core_graphics_GraphicShape');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_graphics_GraphicShape}
+ */
+org_apache_flex_core_graphics_Text = function() {
+ org_apache_flex_core_graphics_Text.base(this, 'constructor');
+
+};
+goog.inherits(org_apache_flex_core_graphics_Text,
+ org_apache_flex_core_graphics_GraphicShape);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_core_graphics_Text.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'Rect',
+ qName: 'org_apache_flex_core_graphics_Text' }] };
+
+
+/**
+ * @expose
+ * @param {string} value The text to be drawn.
+ * @param {number} x The x position of the top-left corner of the rectangle.
+ * @param {number} y The y position of the top-left corner.
+ */
+org_apache_flex_core_graphics_Text.prototype.drawText = function(value, x, y) {
+ var style = this.getStyleStr();
+ var text = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+ text.flexjs_wrapper = this;
+ text.setAttribute('style', style);
+ text.setAttribute('x', String(x) + 'px');
+ text.setAttribute('y', String(y) + 'px');
+ this.setPosition(x, y, 0, 0);
+ var textNode = document.createTextNode(value);
+ text.appendChild(textNode);
+ this.element.appendChild(text);
+
+ this.resize(x, y, text.getBBox());
+ };
+
+
+/**
+ * @override
+*/
+org_apache_flex_core_graphics_Text.prototype.draw = function() {
+
+};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/events/BrowserEvent.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/events/BrowserEvent.js b/frameworks/projects/Core/js/src/org/apache/flex/events/BrowserEvent.js
new file mode 100644
index 0000000..7f80b0a
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/events/BrowserEvent.js
@@ -0,0 +1,152 @@
+/**
+ * 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_BrowserEvent');
+
+goog.require('goog.events.BrowserEvent');
+//goog.require('org_apache_flex_events_Event');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_events_Event}
+ */
+org_apache_flex_events_BrowserEvent = function() {
+// org_apache_flex_events_BrowserEvent.base(this, 'constructor');
+
+};
+//goog.inherits(org_apache_flex_events_BrowserEvent,
+// org_apache_flex_events_Event);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_BrowserEvent.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'BrowserEvent',
+ qName: 'org_apache_flex_events_BrowserEvent' }] };
+
+
+/**
+ * @type {?goog.events.BrowserEvent}
+ */
+org_apache_flex_events_BrowserEvent.prototype.wrappedEvent = null;
+
+
+/**
+ */
+org_apache_flex_events_BrowserEvent.prototype.preventDefault = function() {
+ this.wrappedEvent.preventDefault();
+};
+
+
+Object.defineProperties(org_apache_flex_events_BrowserEvent.prototype, {
+ /** @expose */
+ currentTarget: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ var o = this.wrappedEvent.currentTarget;
+ if (o && o.flexjs_wrapper)
+ return o.flexjs_wrapper;
+ return o;
+ }
+ },
+ /** @expose */
+ button: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.button;
+ }
+ },
+ /** @expose */
+ charCode: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.charCode;
+ }
+ },
+ /** @expose */
+ clientX: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.clientX;
+ }
+ },
+ /** @expose */
+ clientY: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.clientY;
+ }
+ },
+ /** @expose */
+ keyCode: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.keyCode;
+ }
+ },
+ /** @expose */
+ offsetX: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.offsetX;
+ }
+ },
+ /** @expose */
+ offsetY: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.offsetY;
+ }
+ },
+ /** @expose */
+ screenX: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.screenX;
+ }
+ },
+ /** @expose */
+ screenY: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ return this.wrappedEvent.screenY;
+ }
+ },
+ /** @expose */
+ relatedTarget: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ var o = this.wrappedEvent.relatedTarget;
+ if (o && o.flexjs_wrapper)
+ return o.flexjs_wrapper;
+ return o;
+ }
+ },
+ /** @expose */
+ target: {
+ /** @this {org_apache_flex_events_BrowserEvent} */
+ get: function() {
+ var o = this.wrappedEvent.target;
+ if (o && o.flexjs_wrapper)
+ return o.flexjs_wrapper;
+ return o;
+ }
+ }
+});
+
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/events/CustomEvent.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/events/CustomEvent.js b/frameworks/projects/Core/js/src/org/apache/flex/events/CustomEvent.js
new file mode 100644
index 0000000..9c5608c
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/events/CustomEvent.js
@@ -0,0 +1,58 @@
+/**
+ * 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_CustomEvent');
+
+goog.require('goog.events.Event');
+
+
+
+/**
+ * @constructor
+ * @extends {goog.events.Event}
+ * @param {string} type The event type.
+ */
+org_apache_flex_events_CustomEvent = function(type) {
+ org_apache_flex_events_CustomEvent.base(this, 'constructor', type);
+
+ this.type = type;
+};
+goog.inherits(org_apache_flex_events_CustomEvent,
+ goog.events.Event);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_CustomEvent.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'CustomEvent',
+ qName: 'org_apache_flex_events_CustomEvent'}] };
+
+
+/**
+ * @expose
+ * @param {string} type The event type.
+ */
+org_apache_flex_events_CustomEvent.prototype.init = function(type) {
+ this.type = type;
+};
+
+
+/**
+ * @expose
+ * @type {string} type The event type.
+ */
+org_apache_flex_events_CustomEvent.prototype.type = '';
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/events/DragEvent.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/events/DragEvent.js b/frameworks/projects/Core/js/src/org/apache/flex/events/DragEvent.js
new file mode 100644
index 0000000..3212ebe
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/events/DragEvent.js
@@ -0,0 +1,146 @@
+/**
+ * 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_DragEvent');
+
+goog.require('goog.events.BrowserEvent');
+goog.require('org_apache_flex_events_ElementEvents');
+goog.require('org_apache_flex_events_EventDispatcher');
+
+
+
+/**
+ * @constructor
+ * This is a shim class. A native MouseEvent is actually
+ * sent with additional properties like dragInitiator and
+ * dragSource tacked on.
+ *
+ * @extends {goog.events.BrowserEvent}
+ * @param {string} type The event type.
+ */
+org_apache_flex_events_DragEvent = function(type) {
+ org_apache_flex_events_DragEvent.base(this, 'constructor');
+
+ this.type = type;
+};
+goog.inherits(org_apache_flex_events_DragEvent,
+ goog.events.BrowserEvent);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_DragEvent.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'DragEvent',
+ qName: 'org_apache_flex_events_DragEvent'}] };
+
+
+/**
+ * @expose
+ * @param {string} type The event type.
+ * @param {Event} e The mouse event to base the DragEvent on.
+ * @return {MouseEvent} The new event.
+ */
+org_apache_flex_events_DragEvent.createDragEvent =
+ function(type, e) {
+ var out = new MouseEvent(type);
+ out.initMouseEvent(type, true, true,
+ e.view, e.detail, e.screenX, e.screenY,
+ e.clientX, e.clientY, e.ctrlKey, e.altKey,
+ e.shiftKey, e.metaKey, e.button, e.relatedTarget);
+ return out;
+};
+
+
+/**
+ * @expose
+ * @param {Event} event The drag event.
+ * @param {Object} target The target for the event.
+ */
+org_apache_flex_events_DragEvent.dispatchDragEvent =
+ function(event, target) {
+ target.element.dispatchEvent(event);
+};
+
+
+/**
+ * @expose
+ * @type {string} DRAG_START The event type for starting drag-drop.
+ */
+org_apache_flex_events_DragEvent.DRAG_START = 'dragStart';
+
+
+/**
+ * @expose
+ * @type {string} DRAG_MOVE The event type when moving mouse during drag-drop.
+ */
+org_apache_flex_events_DragEvent.DRAG_MOVE = 'dragMove';
+
+
+/**
+ * @expose
+ * @type {string} DRAG_END The event type for ending drag-drop.
+ */
+org_apache_flex_events_DragEvent.DRAG_END = 'dragEnd';
+
+
+/**
+ * @expose
+ * @type {string} DRAG_ENTER The event type for entering a potential drop target.
+ */
+org_apache_flex_events_DragEvent.DRAG_ENTER = 'dragEnter';
+
+
+/**
+ * @expose
+ * @type {string} DRAG_OVER The event type for moving over a potential drop target.
+ */
+org_apache_flex_events_DragEvent.DRAG_OVER = 'dragOver';
+
+
+/**
+ * @expose
+ * @type {string} DRAG_EXIT The event type for leaving a potential drop target.
+ */
+org_apache_flex_events_DragEvent.DRAG_EXIT = 'dragExit';
+
+
+/**
+ * @expose
+ * @type {string} DRAG_DROP The event type for dropping on a target.
+ */
+org_apache_flex_events_DragEvent.DRAG_DROP = 'dragDrop';
+
+
+/**
+ * @return {boolean}
+ */
+org_apache_flex_events_DragEvent.installDragEventMixin = function() {
+ var o = org_apache_flex_events_ElementEvents.elementEvents;
+ o['dragEnd'] = 1;
+ o['dragMove'] = 1;
+ return true;
+};
+
+
+/**
+ * Add some other events to listen from the element
+ */
+/**
+ * @type {boolean}
+ */
+org_apache_flex_events_DragEvent.dragEventMixin =
+ org_apache_flex_events_DragEvent.installDragEventMixin();
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/events/ElementEvents.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/events/ElementEvents.js b/frameworks/projects/Core/js/src/org/apache/flex/events/ElementEvents.js
new file mode 100644
index 0000000..315b105
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/events/ElementEvents.js
@@ -0,0 +1,47 @@
+/**
+ * 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_ElementEvents');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_events_ElementEvents = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_ElementEvents.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'ElementEvents',
+ qName: 'org_apache_flex_events_ElementEvents' }] };
+
+
+/**
+ * @type {Object}
+ */
+org_apache_flex_events_ElementEvents.elementEvents = {
+ 'mouseover': 1,
+ 'mouseout': 1,
+ 'mouseup': 1,
+ 'mousedown': 1,
+ 'mousemove': 1,
+ 'rollover': 1,
+ 'rollout': 1
+};
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/events/Event.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/events/Event.js b/frameworks/projects/Core/js/src/org/apache/flex/events/Event.js
new file mode 100644
index 0000000..73ecdd0
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/events/Event.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.
+ */
+// EventHandler and ErrorHandler are not listed as deps for
+// some of the event classes because they would cause
+// circularities so we force them in here.
+goog.provide('org_apache_flex_events_Event');
+
+goog.require('goog.debug.ErrorHandler');
+goog.require('goog.events.Event');
+goog.require('goog.events.EventHandler');
+
+
+
+/**
+ * @constructor
+ * @extends {goog.events.Event}
+ * @param {string} type The event type.
+ */
+org_apache_flex_events_Event = function(type) {
+ org_apache_flex_events_Event.base(this, 'constructor', type);
+
+ this.type = type;
+};
+goog.inherits(org_apache_flex_events_Event,
+ goog.events.Event);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_Event.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'Event',
+ qName: 'org_apache_flex_events_Event' }] };
+
+
+/**
+ * Enum type for the events fired by the FlexJS Event
+ * @enum {string}
+ */
+org_apache_flex_events_Event.EventType = {
+ CHANGE: 'change'
+ };
+
+
+/**
+ * @expose
+ * @type {string} type The event type.
+ */
+org_apache_flex_events_Event.prototype.type = '';
+
+
+/**
+ * @expose
+ * @param {string} type The event type.
+ */
+org_apache_flex_events_Event.prototype.init = function(type) {
+ this.type = type;
+};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/events/EventDispatcher.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/events/EventDispatcher.js b/frameworks/projects/Core/js/src/org/apache/flex/events/EventDispatcher.js
new file mode 100644
index 0000000..9f66ef7
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/events/EventDispatcher.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.
+ */
+
+goog.provide('org_apache_flex_events_EventDispatcher');
+
+goog.require('goog.events.EventTarget');
+goog.require('org_apache_flex_events_ElementEvents');
+goog.require('org_apache_flex_events_IEventDispatcher');
+
+
+
+/**
+ * @constructor
+ * @extends {goog.events.EventTarget}
+ * @implements {org_apache_flex_events_IEventDispatcher}
+ */
+org_apache_flex_events_EventDispatcher = function() {
+ org_apache_flex_events_EventDispatcher.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_events_EventDispatcher,
+ goog.events.EventTarget);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_EventDispatcher.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'EventDispatcher',
+ qName: 'org_apache_flex_events_EventDispatcher'}],
+ interfaces: [org_apache_flex_events_IEventDispatcher] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_events_EventDispatcher.prototype.addEventListener =
+ function(type, handler, opt_capture, opt_handlerScope) {
+ var source;
+
+ /**
+ * A bit of a hack, but for 'native' HTML element based controls, we
+ * want to listen to the 'native' events from the element; for other
+ * types of controls, we listen to 'custom' events.
+ */
+ source = this;
+ if (this.element && this.element.nodeName &&
+ this.element.nodeName.toLowerCase() !== 'div' &&
+ this.element.nodeName.toLowerCase() !== 'body') {
+ source = this.element;
+ } else if (org_apache_flex_events_ElementEvents.elementEvents[type]) {
+ // mouse and keyboard events also dispatch off the element.
+ source = this.element;
+ }
+
+ goog.events.listen(source, type, handler);
+};
+
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Core/js/src/org/apache/flex/events/IEventDispatcher.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/events/IEventDispatcher.js b/frameworks/projects/Core/js/src/org/apache/flex/events/IEventDispatcher.js
new file mode 100644
index 0000000..10e04ad
--- /dev/null
+++ b/frameworks/projects/Core/js/src/org/apache/flex/events/IEventDispatcher.js
@@ -0,0 +1,40 @@
+/**
+ * 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_events_IEventDispatcher');
+
+
+
+/**
+ * IEventDispatcher
+ *
+ * @interface
+ */
+org_apache_flex_events_IEventDispatcher = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_IEventDispatcher.prototype.FLEXJS_CLASS_INFO =
+ { names: [{ name: 'IEventDispatcher',
+ qName: 'org_apache_flex_events_IEventDispatcher'}] };