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:26 UTC

[21/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/CreateJS/js/src/org/apache/flex/createjs/Label.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/Label.js b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/Label.js
new file mode 100644
index 0000000..6dc5f10
--- /dev/null
+++ b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/Label.js
@@ -0,0 +1,63 @@
+/**
+ * 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_createjs_Label');
+
+goog.require('org_apache_flex_createjs_core_UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_createjs_core_UIBase}
+ */
+org_apache_flex_createjs_Label = function() {
+  org_apache_flex_createjs_core_UIBase.call(this);
+};
+goog.inherits(org_apache_flex_createjs_Label,
+    org_apache_flex_createjs_core_UIBase);
+
+
+/**
+ * @override
+ */
+org_apache_flex_createjs_Label.prototype.createElement =
+    function(p) {
+  org_apache_flex_createjs_Label.base(this, 'createElement');
+
+  this.element = new createjs.Text('default text', '20px Arial', '#ff7700');
+  this.element.x = 0;
+  this.element.y = 20;
+  this.element.textBaseline = 'alphabetic';
+  p.addChild(this.element);
+  p.getStage().update();
+
+  this.positioner = this.element;
+};
+
+
+Object.defineProperties(org_apache_flex_createjs_Label.prototype, {
+    /** @expose */
+    text: {
+        /** @this {org_apache_flex_createjs_Label} */
+        get: function() {
+            return this.element.text;
+        },
+        /** @this {org_apache_flex_createjs_Label} */
+        set: function(value) {
+            this.element.text = value;
+            this.element.getStage().update();
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/TextButton.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/TextButton.js b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/TextButton.js
new file mode 100644
index 0000000..d6b8425
--- /dev/null
+++ b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/TextButton.js
@@ -0,0 +1,90 @@
+/**
+ * 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_createjs_TextButton');
+
+goog.require('org_apache_flex_createjs_core_UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_createjs_core_UIBase}
+ */
+org_apache_flex_createjs_TextButton = function() {
+  org_apache_flex_createjs_core_UIBase.call(this);
+};
+goog.inherits(org_apache_flex_createjs_TextButton,
+    org_apache_flex_createjs_core_UIBase);
+
+
+/**
+ * @expose
+ * @type {Object}
+ */
+org_apache_flex_createjs_TextButton.prototype.buttonLabel = null;
+
+
+/**
+ * @expose
+ * @type {Object}
+ */
+org_apache_flex_createjs_TextButton.prototype.buttonBackground =
+    null;
+
+
+/**
+ * @override
+ */
+org_apache_flex_createjs_TextButton.prototype.createElement =
+    function(p) {
+
+  this.buttonBackground = new createjs.Shape();
+  this.buttonBackground.name = 'background';
+  this.buttonBackground.graphics.beginFill('red').
+      drawRoundRect(0, 0, 200, 60, 10);
+
+  this.buttonLabel = new createjs.Text('button', 'bold 24px Arial',
+      '#FFFFFF');
+  this.buttonLabel.name = 'label';
+  this.buttonLabel.textAlign = 'center';
+  this.buttonLabel.textBaseline = 'middle';
+  this.buttonLabel.x = 200 / 2;
+  this.buttonLabel.y = 60 / 2;
+
+  this.element = new createjs.Container();
+  this.element.name = 'button';
+  this.element.x = 50;
+  this.element.y = 25;
+  this.element.addChild(this.buttonBackground, this.buttonLabel);
+  p.addChild(this.element);
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+};
+
+
+Object.defineProperties(org_apache_flex_createjs_TextButton.prototype, {
+    /** @expose */
+    text: {
+        /** @this {org_apache_flex_createjs_TextButton} */
+        get: function() {
+            return this.buttonLabel.text;
+        },
+        /** @this {org_apache_flex_createjs_TextButton} */
+        set: function(value) {
+            this.buttonLabel.text = value;
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/UIBase.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/UIBase.js b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/UIBase.js
new file mode 100644
index 0000000..ee80cd7
--- /dev/null
+++ b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/UIBase.js
@@ -0,0 +1,135 @@
+/**
+ * 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_createjs_core_UIBase');
+
+goog.require('org_apache_flex_core_HTMLElementWrapper');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_HTMLElementWrapper}
+ */
+org_apache_flex_createjs_core_UIBase = function() {
+  org_apache_flex_createjs_core_UIBase.base(this, 'constructor');
+
+  /**
+     * @protected
+     * @type {Object}
+     */
+  this.positioner = null;
+
+  this.createElement();
+};
+goog.inherits(org_apache_flex_createjs_core_UIBase,
+    org_apache_flex_core_HTMLElementWrapper);
+
+
+/**
+ * @param {Object} c The child element.
+ */
+org_apache_flex_createjs_core_UIBase.prototype.addElement =
+    function(c) {
+  this.addChild(c.element);
+};
+
+
+/**
+ */
+org_apache_flex_createjs_core_UIBase.prototype.createElement =
+    function() {
+  this.element = new createjs.Container();
+
+  this.positioner = this.element;
+};
+
+
+Object.defineProperties(org_apache_flex_createjs_core_UIBase.prototype, {
+    /** @expose */
+    x: {
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        set: function(pixels) {
+            this.positioner.x = pixels;
+            this.element.getStage().update();
+        }
+    },
+    /** @expose */
+    y: {
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        set: function(pixels) {
+            this.positioner.y = pixels;
+            this.element.getStage().update();
+        }
+    },
+    /** @expose */
+    width: {
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        set: function(pixels) {
+            this.positioner.width = pixels;
+            this.element.getStage().update();
+        }
+    },
+    /** @expose */
+    height: {
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        set: function(pixels) {
+            this.positioner.height = pixels;
+            this.element.getStage().update();
+        }
+    },
+    /** @expose */
+    id: {
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        get: function() {
+             return this.name;
+        },
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        set: function(value) {
+            if (this.name !== value) {
+              this.element.name = value;
+              this.name = value;
+              this.dispatchEvent('idChanged');
+            }
+        }
+    },
+    /** @expose */
+    model: {
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        get: function() {
+            return this.model;
+        },
+        /** @this {org_apache_flex_createjs_core_UIBase} */
+        set: function(value) {
+            if (this.model !== value) {
+              this.addBead(value);
+              this.dispatchEvent('modelChanged');
+            }
+        }
+    }
+});
+
+
+/**
+ * @expose
+ * @type {string}
+ */
+org_apache_flex_createjs_core_UIBase.prototype.id = null;
+
+
+/**
+ * @expose
+ * @type {object}
+ */
+org_apache_flex_createjs_core_UIBase.prototype.model = null;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/ViewBase.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/ViewBase.js b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/ViewBase.js
new file mode 100644
index 0000000..baf26a3
--- /dev/null
+++ b/frameworks/projects/CreateJS/js/src/org/apache/flex/createjs/core/ViewBase.js
@@ -0,0 +1,76 @@
+/**
+ * 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_createjs_core_ViewBase');
+
+goog.require('org_apache_flex_createjs_core_UIBase');
+goog.require('org_apache_flex_utils_MXMLDataInterpreter');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_createjs_core_UIBase}
+ */
+org_apache_flex_createjs_core_ViewBase = function() {
+  org_apache_flex_createjs_core_ViewBase.base(this, 'constructor');
+
+  /**
+      * @private
+      * @type {org_apache_flex_createjs_core_ViewBase}
+      */
+  this.currentObject_ = null;
+};
+goog.inherits(org_apache_flex_createjs_core_ViewBase,
+    org_apache_flex_createjs_core_UIBase);
+
+
+Object.defineProperties(org_apache_flex_createjs_core_ViewBase.prototype, {
+    /** @expose */
+    applicationModel: {
+        /** @this {org_apache_flex_createjs_core_ViewBase} */
+        get: function() {
+            return this.applicationModel_;
+        },
+        set: function(value) {
+            this.applicationModel = value;
+        }
+    }
+});
+
+
+/**
+ * @expose
+ * @type {Array}
+ */
+org_apache_flex_createjs_core_ViewBase.prototype.MXMLProperties = null;
+
+
+/**
+ * @expose
+ * @type {Array}
+ */
+org_apache_flex_createjs_core_ViewBase.prototype.MXMLDescriptor = null;
+
+
+/**
+ * @param {Object} model The model for this view.
+ */
+org_apache_flex_createjs_core_ViewBase.prototype.initUI = function(model) {
+  this.applicationModel = model;
+  org_apache_flex_utils_MXMLDataInterpreter.generateMXMLProperties(this,
+      this.MXMLProperties);
+  org_apache_flex_utils_MXMLDataInterpreter.generateMXMLInstances(this,
+      this, this.MXMLDescriptor);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/Effects/js/src/org/apache/flex/effects/PlatformWiper.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Effects/js/src/org/apache/flex/effects/PlatformWiper.js b/frameworks/projects/Effects/js/src/org/apache/flex/effects/PlatformWiper.js
new file mode 100644
index 0000000..de36898
--- /dev/null
+++ b/frameworks/projects/Effects/js/src/org/apache/flex/effects/PlatformWiper.js
@@ -0,0 +1,85 @@
+/**
+ * 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_effects_PlatformWiper');
+
+goog.require('org_apache_flex_geom_Rectangle');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_effects_PlatformWiper = function() {
+
+  /**
+   * @private
+   * @type {Object}
+   */
+  this.target_ = null;
+
+
+  /**
+   * @private
+   * @type {Object}
+   */
+  this.overflow_ = null;
+
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_effects_PlatformWiper.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'PlatformWiper',
+                qName: 'org_apache_flex_effects_PlatformWiper'}] };
+
+
+Object.defineProperties(org_apache_flex_effects_PlatformWiper.prototype, {
+    /** @expose */
+    target: {
+        /** @this {org_apache_flex_effects_PlatformWiper} */
+        set: function(target) {
+            if (target == null) {
+              if (this.overflow_ == null)
+                delete this.target_.positioner.style.overflow;
+              else
+                this.target_.positioner.style.overflow = this.overflow_;
+            }
+            this.target_ = target;
+            if (target != null) {
+              this.overflow_ = this.target_.positioner.style.overflow;
+            }
+        }
+    },
+    /** @expose */
+    visibleRect: {
+        /** @this {org_apache_flex_effects_PlatformWiper} */
+        set: function(rect) {
+            /*
+            var styleString = 'rect(';
+            styleString += rect.top.toString() + 'px,';
+            styleString += rect.width.toString() + 'px,';
+            styleString += rect.height.toString() + 'px,';
+            styleString += rect.left.toString() + 'px)';
+            this.target_.positioner.style.clip = styleString;
+            */
+            this.target_.positioner.style.height = rect.height.toString() + 'px';
+            this.target_.positioner.style.overflow = 'hidden';
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Geometry.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Geometry.js b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Geometry.js
new file mode 100644
index 0000000..0c18920
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Geometry.js
@@ -0,0 +1,50 @@
+/**
+ * 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_maps_google_Geometry');
+
+goog.require('org_apache_flex_maps_google_LatLng');
+
+
+// IMPORTANT:
+// In order to use this class, the Google MAP API must be downloaded
+// from the <head> section of the main HTML file.
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_maps_google_Geometry = function() {
+  this.location = new org_apache_flex_maps_google_LatLng();
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_maps_google_Geometry.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'Geometry',
+           qName: 'org_apache_flex_maps_google_Geometry' }],
+    interfaces: [] };
+
+
+/**
+ * @type {Object} The current location
+ */
+org_apache_flex_maps_google_Geometry.prototype.location = null;
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/LatLng.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/LatLng.js b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/LatLng.js
new file mode 100644
index 0000000..8cafa2e
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/LatLng.js
@@ -0,0 +1,53 @@
+/**
+ * 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_maps_google_LatLng');
+
+
+// IMPORTANT:
+// In order to use this class, the Google MAP API must be downloaded
+// from the <head> section of the main HTML file.
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_maps_google_LatLng = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_maps_google_LatLng.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'LatLng',
+           qName: 'org_apache_flex_maps_google_LatLng' }],
+    interfaces: [] };
+
+
+/**
+ * @type {number} The latitude
+ */
+org_apache_flex_maps_google_LatLng.prototype.lat = 0;
+
+
+/**
+ * @type {number} The longitude
+ */
+org_apache_flex_maps_google_LatLng.prototype.lng = 0;
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Map.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Map.js b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Map.js
new file mode 100644
index 0000000..9a16e5d
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Map.js
@@ -0,0 +1,349 @@
+/**
+ * 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_maps_google_Map');
+
+goog.require('org_apache_flex_core_IBeadModel');
+goog.require('org_apache_flex_maps_google_Geometry');
+goog.require('org_apache_flex_maps_google_LatLng');
+goog.require('org_apache_flex_maps_google_Marker');
+goog.require('org_apache_flex_maps_google_Place');
+goog.require('org_apache_flex_maps_google_models_MapModel');
+
+
+// IMPORTANT:
+// In order to use this class, the Google MAP API must be downloaded
+// from the <head> section of the main HTML file.
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_UIBase}
+ */
+org_apache_flex_maps_google_Map = function() {
+  org_apache_flex_maps_google_Map.base(this, 'constructor');
+  this.initialized = false;
+};
+goog.inherits(org_apache_flex_maps_google_Map,
+    org_apache_flex_core_UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_maps_google_Map.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'Map',
+           qName: 'org_apache_flex_maps_google_Map' }],
+    interfaces: [] };
+
+
+/**
+ *
+ */
+org_apache_flex_maps_google_Map.prototype.searchResults = null;
+
+
+/**
+ * @override
+ * @protected
+ * @return {Object} The actual element to be parented.
+ */
+org_apache_flex_maps_google_Map.prototype.createElement =
+    function() {
+
+  var model = new org_apache_flex_maps_google_models_MapModel();
+  this.addBead(model);
+
+  this.element = document.createElement('div');
+  this.className = 'Map';
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+Object.defineProperties(org_apache_flex_maps_google_Map.prototype, {
+    /** @expose */
+    token: {
+        /** @this {org_apache_flex_maps_google_Map} */
+        set: function(value) {
+            this.token = value;
+        }
+    },
+    /** @expose */
+    selectedMarker: {
+        /** @this {org_apache_flex_maps_google_Map} */
+        get: function() {
+            return this._selectedMarker;
+        }
+    }
+});
+
+
+/**
+ */
+org_apache_flex_maps_google_Map.prototype.finishInitalization = function() {
+  this.loadMap(37.333, -121.900, 12);
+  this.initialized = true;
+  this.dispatchEvent('ready');
+};
+
+
+/**
+ * @expose
+ * @param {number} centerLat center latitude.
+ * @param {number} centerLong center longitude.
+ * @param {number} zoom zoom level.
+ */
+org_apache_flex_maps_google_Map.prototype.loadMap =
+    function(centerLat, centerLong, zoom) {
+  if (!this.initialized) {
+    this.currentCenter = new window['google']['maps']['LatLng'](centerLat, centerLong);
+    var mapOptions = {};
+    mapOptions['center'] = this.currentCenter;
+    mapOptions['zoom'] = zoom;
+    this.map = new window['google']['maps']['Map'](this.element, mapOptions);
+    this.geocoder = null;
+    google.maps.event.addListener(this.map, 'center_changed', goog.bind(this.centerChangeHandler, this));
+    google.maps.event.addListener(this.map, 'bounds_changed', goog.bind(this.boundsChangeHandler, this));
+    google.maps.event.addListener(this.map, 'zoom_changed', goog.bind(this.zoomChangeHandler, this));
+  }
+};
+
+
+/**
+ * @expose
+ * @param {Number} zoomLevel The level of magnification.
+ */
+org_apache_flex_maps_google_Map.prototype.setZoom =
+    function(zoomLevel) {
+  if (this.initialized) {
+    this.map.setZoom(zoomLevel);
+  }
+};
+
+
+/**
+ * @expose
+ * @param {string} address The new center of the map.
+ */
+org_apache_flex_maps_google_Map.prototype.centerOnAddress = function(address) {
+  if (!this.geocoder) this.geocoder = new window['google']['maps']['Geocoder']();
+  this.geocoder.geocode({ 'address': address}, goog.bind(this.positionHandler, this));
+};
+
+
+/**
+ * @expose
+ * @param {Object} location The new center of the map.
+ */
+org_apache_flex_maps_google_Map.prototype.setCenter = function(location) {
+  this.currentCenter = new window['google']['maps']['LatLng'](location.lat, location.lng);
+  this.map.setCenter(this.currentCenter);
+};
+
+
+/**
+ * @expose
+ */
+org_apache_flex_maps_google_Map.prototype.markCurrentLocation = function() {
+  this.createMarker(this.currentCenter);
+};
+
+
+/**
+ * @expose
+ * @param {string} address The address to locate and mark on the map.
+ */
+org_apache_flex_maps_google_Map.prototype.markAddress =
+    function(address) {
+  if (this.initialized) {
+    if (!this.geocoder) this.geocoder = new window['google']['maps']['Geocoder']();
+    this.geocoder.geocode({ 'address': address}, goog.bind(this.geoCodeHandler, this));
+  }
+};
+
+
+/**
+ * @expose
+ * @param {Object} location A LatLng that denotes the position of the marker.
+ * @return {Object} A marker object.
+ */
+org_apache_flex_maps_google_Map.prototype.createMarker =
+    function(location) {
+  var marker = new window['google']['maps']['Marker']({
+    map: this.map,
+    position: location
+  });
+  google.maps.event.addListener(marker, 'click', goog.bind(this.markerClicked, this, marker));
+  return marker;
+};
+
+
+/**
+ * @expose
+ * @param {string} placeName A place to search for.
+ */
+org_apache_flex_maps_google_Map.prototype.nearbySearch =
+    function(placeName) {
+  if (this.markers == null) this.markers = [];
+  this.service = new window['google']['maps']['places']['PlacesService'](this.map);
+  this.service.nearbySearch({'location': this.currentCenter,
+    'radius': 5000,
+    'name': placeName}, goog.bind(this.searchResultHandler, this));
+};
+
+
+/**
+ * @expose
+ */
+org_apache_flex_maps_google_Map.prototype.clearSearchResults =
+function() {
+  if (this.markers) {
+    for (var i = 0; i < this.markers.length; i++) {
+      this.markers[i]['setMap'](null);
+    }
+    this.markers = null;
+  }
+};
+
+
+/**
+ * @param {Object} marker The marker that was clicked.
+ * @param {Object} event The mouse event for the marker click.
+ */
+org_apache_flex_maps_google_Map.prototype.markerClicked =
+function(marker, event) {
+  var newMarker = new org_apache_flex_maps_google_Marker();
+  newMarker.position.lat = marker.position.lat();
+  newMarker.position.lng = marker.position.lng();
+  newMarker.title = marker.title;
+  newMarker.map = this;
+
+  this._selectedMarker = newMarker;
+
+  var newEvent = new org_apache_flex_events_Event('markerClicked');
+  newEvent.marker = newMarker;
+  this.dispatchEvent(newEvent);
+};
+
+
+/**
+ * @param {Array} results The found location(s).
+ * @param {string} status Status of the call.
+ */
+org_apache_flex_maps_google_Map.prototype.positionHandler =
+    function(results, status) {
+  if (status == window['google']['maps']['GeocoderStatus']['OK']) {
+    this.currentCenter = results[0]['geometry']['location'];
+    this.map['setCenter'](this.currentCenter);
+
+    var newEvent = document.createEvent('Event');
+    newEvent.initEvent('mapCentered', true, true);
+    window.dispatchEvent(newEvent);
+  } else {
+    alert('Geocode was not successful for the following reason: ' + status);
+  }
+};
+
+
+/**
+ * @param {Array} results The found location(s).
+ * @param {string} status Status of the call.
+ */
+org_apache_flex_maps_google_Map.prototype.geoCodeHandler =
+    function(results, status) {
+  if (status == window['google']['maps']['GeocoderStatus']['OK']) {
+    this.currentCenter = results[0]['geometry']['location'];
+    this.map['setCenter'](this.currentCenter);
+    var marker = new window['google']['maps']['Marker']({
+      map: this.map,
+      position: this.currentCenter
+    });
+  } else {
+    alert('Geocode was not successful for the following reason: ' + status);
+  }
+};
+
+
+/**
+ * @param {Array} results The result of the search.
+ * @param {string} status Status of the search.
+ */
+org_apache_flex_maps_google_Map.prototype.searchResultHandler =
+function(results, status) {
+  this.searchResults = [];
+  if (status == window['google']['maps']['places']['PlacesServiceStatus']['OK']) {
+    for (var i = 0; i < results.length; i++) {
+      var place = new org_apache_flex_maps_google_Place();
+      place.geometry.location.lat = results[i]['geometry']['location']['lat'];
+      place.geometry.location.lng = results[i]['geometry']['location']['lng'];
+      place.icon = results[i]['icon'];
+      place.id = results[i]['id'];
+      place.name = results[i]['name'];
+      place.reference = results[i]['reference'];
+      place.vicinity = results[i]['vicinity'];
+      this.searchResults.push(place);
+
+      var marker = this.createMarker(results[i]['geometry']['location']);
+      marker.title = place.name;
+
+      this.markers.push(marker);
+    }
+    var model = this.model;
+    model.searchResults = this.searchResults;
+  }
+};
+
+
+/**
+ * Handles changes in map center
+ */
+org_apache_flex_maps_google_Map.prototype.centerChangeHandler =
+    function() {
+  this.currentCenter = this.map['getCenter']();
+
+  var newEvent = new org_apache_flex_events_Event('centered');
+  this.dispatchEvent(newEvent);
+};
+
+
+/**
+ * Handles changes in map bounds
+ */
+org_apache_flex_maps_google_Map.prototype.boundsChangeHandler =
+    function() {
+  this.currentCenter = this.map['getCenter']();
+
+  var newEvent = new org_apache_flex_events_Event('boundsChanged');
+  this.dispatchEvent(newEvent);
+};
+
+
+/**
+ * Handles changes in map bounds
+ */
+org_apache_flex_maps_google_Map.prototype.zoomChangeHandler =
+    function() {
+  this.currentCenter = this.map['getCenter']();
+
+  var newEvent = new org_apache_flex_events_Event('zoomChanged');
+  this.dispatchEvent(newEvent);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Marker.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Marker.js b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Marker.js
new file mode 100644
index 0000000..36b14da
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Marker.js
@@ -0,0 +1,63 @@
+/**
+ * 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_maps_google_Marker');
+
+goog.require('org_apache_flex_maps_google_LatLng');
+
+
+
+// IMPORTANT:
+// In order to use this class, the Google MAP API must be downloaded
+// from the <head> section of the main HTML file.
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_maps_google_Marker = function() {
+  this.position = new org_apache_flex_maps_google_LatLng();
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_maps_google_Marker.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'Marker',
+           qName: 'org_apache_flex_maps_google_Marker' }],
+    interfaces: [] };
+
+
+/**
+ * @type {Object} The marker's location.
+ */
+org_apache_flex_maps_google_Marker.prototype.position = null;
+
+
+/**
+ * @type {String} The title for the marker.
+ */
+org_apache_flex_maps_google_Marker.prototype.title = null;
+
+
+/**
+ * @type {Object} The map to which the marker belongs.
+ */
+org_apache_flex_maps_google_Marker.prototype.map = null;
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Place.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Place.js b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Place.js
new file mode 100644
index 0000000..482df0e
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/Place.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_maps_google_Place');
+
+goog.require('org_apache_flex_maps_google_Geometry');
+
+
+// IMPORTANT:
+// In order to use this class, the Google MAP API must be downloaded
+// from the <head> section of the main HTML file.
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_maps_google_Place = function() {
+  this.geometry = new org_apache_flex_maps_google_Geometry();
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_maps_google_Place.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'Place',
+           qName: 'org_apache_flex_maps_google_Place' }],
+    interfaces: [] };
+
+
+/**
+ * @type {Object} The current location
+ */
+org_apache_flex_maps_google_Place.prototype.geometry = null;
+
+
+/**
+ * @type {String} The icon representing the place.
+ */
+org_apache_flex_maps_google_Place.prototype.icon = null;
+
+
+/**
+ * @type {String} A unique identifier for the place.
+ */
+org_apache_flex_maps_google_Place.prototype.id = null;
+
+
+/**
+ * @type {String} The name of the place.
+ */
+org_apache_flex_maps_google_Place.prototype.name = null;
+
+
+/**
+ * @type {String} A reference identifier.
+ */
+org_apache_flex_maps_google_Place.prototype.reference = null;
+
+
+/**
+ * @type {String} A description of the area of the place.
+ */
+org_apache_flex_maps_google_Place.prototype.vicinity = null;
+
+
+/**
+ * @override
+ * @return {string} A description of the area of the place.
+ */
+org_apache_flex_maps_google_Place.prototype.toString = function PlaceToString() {
+  var results = '';
+  if (this.name) results = this.name;
+  if (this.vicinity) results += ' ' + this.vicinity;
+  return results;
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/beads/MapView.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/beads/MapView.js b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/beads/MapView.js
new file mode 100644
index 0000000..d344607
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/beads/MapView.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.
+ */
+/* MapView isn't really the view, but is a bead used to trigger
+   the loading of the map JS files */
+
+goog.provide('org_apache_flex_maps_google_beads_MapView');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_maps_google_beads_MapView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_maps_google_beads_MapView.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'MapView',
+           qName: 'org_apache_flex_maps_google_beads_MapView' }],
+    interfaces: [org_apache_flex_core_IBeadView] };
+
+
+Object.defineProperties(org_apache_flex_maps_google_beads_MapView.prototype, {
+    /** @expose */
+    strand: {
+        /** @this {org_apache_flex_maps_google_beads_MapView} */
+        set: function(value) {
+            this.strand_ = value;
+
+            var token = this.strand_.token;
+            var src = 'https://maps.googleapis.com/maps/api/js?v=3.exp';
+            if (token)
+              src += '&key=' + token;
+            src += '&libraries=places&sensor=false&callback=mapInit';
+
+            var script = document.createElement('script');
+            script.type = 'text/javascript';
+            script.src = src;
+
+            window.mapView = this;
+            window['mapInit'] = function() {
+                this.mapView.strand_.finishInitalization();
+            };
+            document.head.appendChild(script);
+        }
+    }
+});
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/models/MapModel.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/models/MapModel.js b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/models/MapModel.js
new file mode 100644
index 0000000..8a92972
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/js/src/org/apache/flex/maps/google/models/MapModel.js
@@ -0,0 +1,100 @@
+/**
+ * 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_maps_google_models_MapModel');
+
+goog.require('org_apache_flex_core_IBeadModel');
+goog.require('org_apache_flex_events_EventDispatcher');
+
+
+// IMPORTANT:
+// In order to use this class, the Google MAP API must be downloaded
+// from the <head> section of the main HTML file.
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_events_EventDispatcher}
+ * @implements {org_apache_flex_core_IBeadModel}
+ */
+org_apache_flex_maps_google_models_MapModel = function() {
+  org_apache_flex_maps_google_models_MapModel.base(this, 'constructor');
+};
+goog.inherits(
+    org_apache_flex_maps_google_models_MapModel,
+    org_apache_flex_events_EventDispatcher);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_maps_google_models_MapModel.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'MapModel',
+           qName: 'org_apache_flex_maps_google_models_MapModel' }],
+    interfaces: [org_apache_flex_core_IBeadModel] };
+
+
+Object.defineProperties(org_apache_flex_maps_google_models_MapModelv.prototype, {
+    /** @expose */
+    strand: {
+        /** @this {org_apache_flex_maps_google_models_MapModel} */
+        set: function(value) {
+           this.strand_ = value;
+        }
+    },
+    /** @expose */
+    searchResults: {
+        get: function() {
+            return this._searchResults;
+        },
+        set: function(value) {
+            this._searchResults = value;
+            this.dispatchEvent('searchResultsChanged');
+        }
+    },
+    /** @expose */
+    zoom: {
+        get: function() {
+            return this._zoom;
+        },
+        set: function(value) {
+            this._zoom = value;
+            this.dispatchEvent('zoomChanged');
+        }
+    },
+    /** @expose */
+    selectedMarker: {
+        get: function() {
+            return this._selectedMarker;
+        },
+        set: function(value) {
+            this._selectedMarker = value;
+            this.dispatchEvent('selectedMarkerChanged');
+        }
+    },
+    /** @expose */
+    currentLocation: {
+        get: function() {
+            return this._currentLocation;
+        },
+        set: function(value) {
+            this._currentLocation = value;
+            this.dispatchEvent('currentLocationChanged');
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/Alert.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/Alert.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/Alert.js
new file mode 100644
index 0000000..eb8e01c
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/Alert.js
@@ -0,0 +1,193 @@
+/**
+ * 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_html_Alert');
+
+goog.require('org_apache_flex_core_UIBase');
+goog.require('org_apache_flex_html_Container');
+goog.require('org_apache_flex_html_Label');
+goog.require('org_apache_flex_html_TextButton');
+goog.require('org_apache_flex_html_TitleBar');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_html_Container}
+ */
+org_apache_flex_html_Alert = function() {
+  org_apache_flex_html_Alert.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_Alert,
+    org_apache_flex_html_Container);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_Alert.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Alert',
+                qName: 'org_apache_flex_html_Alert'}] };
+
+
+/**
+ * @type {number} The value for the Yes button option.
+ */
+org_apache_flex_html_Alert.YES = 0x000001;
+
+
+/**
+ * @type {number} The value for the No button option.
+ */
+org_apache_flex_html_Alert.NO = 0x000002;
+
+
+/**
+ * @type {number} The value for the OK button option.
+ */
+org_apache_flex_html_Alert.OK = 0x000004;
+
+
+/**
+ * @type {number} The value for the Cancel button option.
+ */
+org_apache_flex_html_Alert.CANCEL = 0x000008;
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_Alert.prototype.createElement =
+    function() {
+  org_apache_flex_html_Alert.base(this, 'createElement');
+
+  this.element.className = 'Alert';
+
+  // add in a title bar
+  this.titleBar = new org_apache_flex_html_TitleBar();
+  this.addElement(this.titleBar);
+  this.titleBar.element.id = 'titleBar';
+
+  this.message = new org_apache_flex_html_Label();
+  this.addElement(this.message);
+  this.message.element.id = 'message';
+
+  // add a place for the buttons
+  this.buttonArea = new org_apache_flex_html_Container();
+  this.addElement(this.buttonArea);
+  this.buttonArea.element.id = 'buttonArea';
+
+  return this.element;
+};
+
+
+/**
+ * @param {string} message The message to be displayed.
+ * @param {Object} host The object to display the alert.
+ * @param {string} title The message to be displayed in the title bar.
+ * @param {number} flags The options for the buttons.
+ */
+org_apache_flex_html_Alert.show =
+    function(message, host, title, flags) {
+
+  var a = new org_apache_flex_html_Alert();
+  host.addElement(a);
+  a.title = title;
+  a.text = message;
+  a.flags = flags;
+
+  a.positioner.style.position = 'relative';
+  a.positioner.style.width = '200px';
+  a.positioner.style.margin = 'auto';
+  a.positioner.style.top = '100px';
+};
+
+
+Object.defineProperties(org_apache_flex_html_Alert.prototype, {
+    /** @expose */
+    title: {
+        /** @this {org_apache_flex_html_Alert} */
+        get: function() {
+            return this.titleBar.title;
+        },
+        /** @this {org_apache_flex_html_Alert} */
+        set: function(value) {
+            this.titleBar.title = value;
+        }
+    },
+    /** @expose */
+    text: {
+        /** @this {org_apache_flex_html_Alert} */
+        get: function() {
+            return this.message.text;
+        },
+        /** @this {org_apache_flex_html_Alert} */
+        set: function(value) {
+            this.message.text = value;
+        }
+    },
+    /** @expose */
+    flags: {
+        /** @this {org_apache_flex_html_Alert} */
+        get: function() {
+            return this.flags;
+        },
+        /** @this {org_apache_flex_html_Alert} */
+        set: function(value) {
+            this.flags = value;
+
+            // add buttons based on flags
+            if (this.flags & org_apache_flex_html_Alert.OK) {
+              var ok = new org_apache_flex_html_TextButton();
+              this.buttonArea.addElement(ok);
+              ok.text = 'OK';
+              goog.events.listen(/** @type {EventTarget} */ (ok.element), 'click',
+                  goog.bind(this.dismissAlert, this));
+            }
+            if (this.flags & org_apache_flex_html_Alert.CANCEL) {
+              var cancel = new org_apache_flex_html_TextButton();
+              this.buttonArea.addElement(cancel);
+              cancel.text = 'Cancel';
+              goog.events.listen(/** @type {EventTarget} */ (cancel.element), 'click',
+                  goog.bind(this.dismissAlert, this));
+            }
+            if (this.flags & org_apache_flex_html_Alert.YES) {
+              var yes = new org_apache_flex_html_TextButton();
+              this.buttonArea.addElement(yes);
+              yes.text = 'YES';
+              goog.events.listen(/** @type {EventTarget} */ (yes.element), 'click',
+                  goog.bind(this.dismissAlert, this));
+            }
+            if (this.flags & org_apache_flex_html_Alert.NO) {
+              var nob = new org_apache_flex_html_TextButton();
+              this.buttonArea.addElement(nob);
+              nob.text = 'NO';
+              goog.events.listen(/** @type {EventTarget} */ (nob.element), 'click',
+                  goog.bind(this.dismissAlert, this));
+            }
+        }
+    }
+});
+
+
+/**
+ * @param {Object} event The event object.
+ */
+org_apache_flex_html_Alert.prototype.dismissAlert =
+    function(event)
+    {
+  this.element.parentElement.removeChild(this.element);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/Button.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/Button.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/Button.js
new file mode 100644
index 0000000..36db23a
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/Button.js
@@ -0,0 +1,60 @@
+/**
+ * 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_html_Button');
+
+goog.require('org_apache_flex_core_UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_UIBase}
+ */
+org_apache_flex_html_Button = function() {
+  org_apache_flex_html_Button.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_Button,
+    org_apache_flex_core_UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_Button.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Button',
+                qName: 'org_apache_flex_html_Button'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_Button.prototype.createElement =
+    function() {
+  this.element = document.createElement('button');
+  this.element.setAttribute('type', 'button');
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  if (org_apache_flex_core_ValuesManager.valuesImpl.getValue) {
+    var impl = org_apache_flex_core_ValuesManager.valuesImpl.
+        getValue(this, 'iStatesImpl');
+  }
+
+  return this.element;
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/ButtonBar.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/ButtonBar.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/ButtonBar.js
new file mode 100644
index 0000000..d01b39f
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/ButtonBar.js
@@ -0,0 +1,87 @@
+/**
+ * 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_html_ButtonBar');
+
+goog.require('org_apache_flex_core_ListBase');
+goog.require('org_apache_flex_html_List');
+goog.require('org_apache_flex_html_beads_DataItemRendererFactoryForArrayData');
+goog.require('org_apache_flex_html_beads_layouts_NonVirtualHorizontalLayout');
+goog.require('org_apache_flex_html_supportClasses_ButtonBarButtonItemRenderer');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_html_List}
+ */
+org_apache_flex_html_ButtonBar = function() {
+
+  //  this.model = new
+  //        org_apache_flex_html_beads_models_ArraySelectionModel();
+  //  this.addBead(this.model);
+
+  org_apache_flex_html_ButtonBar.base(this, 'constructor');
+
+  //  this.addBead(new
+  //        org_apache_flex_html_beads_ListView());
+
+  //  this.addBead(new
+  //org_apache_flex_html_beads_layouts_NonVirtualHorizontalLayout());
+
+  //  this.itemRendererFactory = new
+  //        org_apache_flex_html_beads_
+  //        DataItemRendererFactoryForArrayData();
+  //  this.itemRendererFactory.itemRendererClass = 'org_apache_flex_html_' +
+  //        'supportClasses_ButtonBarButtonItemRenderer';
+  //  this.addBead(this.itemRendererFactory);
+
+  //  this.addBead(new
+  //        org_apache_flex_html_beads_controllers_
+  //        ListSingleSelectionMouseController());
+};
+goog.inherits(org_apache_flex_html_ButtonBar,
+    org_apache_flex_html_List);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_ButtonBar.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ButtonBar',
+                qName: 'org_apache_flex_html_ButtonBar'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_ButtonBar.prototype.createElement =
+    function() {
+  //org_apache_flex_html_ButtonBar.base(this, 'createElement');
+
+  this.element = document.createElement('div');
+  this.element.style.overflow = 'auto';
+  this.element.style.border = 'solid';
+  this.element.style.borderWidth = '1px';
+  this.element.style.borderColor = '#333333';
+  this.positioner = this.element;
+
+  this.className = 'ButtonBar';
+
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/CheckBox.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/CheckBox.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/CheckBox.js
new file mode 100644
index 0000000..2dcfbe7
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/CheckBox.js
@@ -0,0 +1,87 @@
+/**
+ * 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_html_CheckBox');
+
+goog.require('org_apache_flex_core_UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_UIBase}
+ */
+org_apache_flex_html_CheckBox = function() {
+  org_apache_flex_html_CheckBox.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_CheckBox,
+    org_apache_flex_core_UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_CheckBox.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'CheckBox',
+                qName: 'org_apache_flex_html_CheckBox'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_CheckBox.prototype.createElement =
+    function() {
+  var cb;
+
+  this.element = document.createElement('label');
+
+  cb = document.createElement('input');
+  cb.type = 'checkbox';
+  this.element.appendChild(cb);
+  this.element.appendChild(document.createTextNode(''));
+
+  this.positioner = this.element;
+  cb.flexjs_wrapper = this;
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+Object.defineProperties(org_apache_flex_html_CheckBox.prototype, {
+    /** @expose */
+    text: {
+        /** @this {org_apache_flex_html_CheckBox} */
+        get: function() {
+            return this.element.childNodes.item(1).nodeValue;
+        },
+        /** @this {org_apache_flex_html_CheckBox} */
+        set: function(value) {
+            this.element.childNodes.item(1).nodeValue = value;
+        }
+    },
+    /** @expose */
+    selected: {
+        /** @this {org_apache_flex_html_CheckBox} */
+        get: function() {
+            return this.element.childNodes.item(0).checked;
+        },
+        /** @this {org_apache_flex_html_CheckBox} */
+        set: function(value) {
+            this.element.childNodes.item(0).checked = value;
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/CloseButton.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/CloseButton.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/CloseButton.js
new file mode 100644
index 0000000..54256da
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/CloseButton.js
@@ -0,0 +1,55 @@
+/**
+ * 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_html_CloseButton');
+
+goog.require('org_apache_flex_html_Button');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_html_Button}
+ */
+org_apache_flex_html_CloseButton = function() {
+  org_apache_flex_html_CloseButton.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_CloseButton,
+    org_apache_flex_html_Button);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_CloseButton.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'CloseButton',
+                qName: 'org_apache_flex_html_CloseButton'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_CloseButton.prototype.createElement =
+    function() {
+  org_apache_flex_html_CloseButton.base(this, 'createElement');
+  this.element.innerHTML = 'x';
+
+  this.element.style.padding = 0;
+  this.height = 11;
+  this.width = 11;
+  return this.element;
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/ComboBox.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/ComboBox.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/ComboBox.js
new file mode 100644
index 0000000..4e74d7b
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/ComboBox.js
@@ -0,0 +1,195 @@
+/**
+ * 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_html_ComboBox');
+
+goog.require('org_apache_flex_core_ListBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_ListBase}
+ */
+org_apache_flex_html_ComboBox = function() {
+  org_apache_flex_html_ComboBox.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_ComboBox,
+    org_apache_flex_core_ListBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_ComboBox.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ComboBox',
+                qName: 'org_apache_flex_html_ComboBox'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_ComboBox.prototype.createElement =
+    function() {
+  var button, input;
+
+  this.element = document.createElement('div');
+
+  input = document.createElement('input');
+  input.style.position = 'absolute';
+  input.style.width = '80px';
+  this.element.appendChild(input);
+
+  button = document.createElement('div');
+  button.style.position = 'absolute';
+  button.style.top = '0px';
+  button.style.right = '0px';
+  button.style.background = '#bbb';
+  button.style.width = '16px';
+  button.style.height = '20px';
+  button.style.margin = '0';
+  button.style.border = 'solid #609 1px';
+  goog.events.listen(button, 'click', goog.bind(this.buttonClicked, this));
+  this.element.appendChild(button);
+
+  this.element.style.position = 'relative';
+
+  this.positioner = this.element;
+
+  // add a click handler so that a click outside of the combo box can
+  // dismiss the pop-up should it be visible.
+  goog.events.listen(document, 'click',
+      goog.bind(this.dismissPopup, this));
+
+  input.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event.
+ */
+org_apache_flex_html_ComboBox.prototype.selectChanged =
+    function(event) {
+  var select;
+
+  select = event.currentTarget;
+
+  this.selectedItem = select.options[select.selectedIndex].value;
+
+  this.popup.parentNode.removeChild(this.popup);
+  this.popup = null;
+
+  this.dispatchEvent(event);
+};
+
+
+/**
+ * @expose
+ * @param {Object=} opt_event The event.
+ */
+org_apache_flex_html_ComboBox.prototype.dismissPopup =
+    function(opt_event) {
+  // remove the popup if it already exists
+  if (this.popup) {
+    this.popup.parentNode.removeChild(this.popup);
+    this.popup = null;
+  }
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event.
+ */
+org_apache_flex_html_ComboBox.prototype.buttonClicked =
+    function(event) {
+  /**
+   * @type {Array.<string>}
+   */
+  var dp;
+  var i, input, left, n, opt, opts, pn, popup, select, si, top, width;
+
+  event.stopPropagation();
+
+  if (this.popup) {
+    this.dismissPopup();
+
+    return;
+  }
+
+  input = this.element.childNodes.item(0);
+
+  pn = this.element;
+  top = pn.offsetTop + input.offsetHeight;
+  left = pn.offsetLeft;
+  width = pn.offsetWidth;
+
+  popup = document.createElement('div');
+  popup.className = 'popup';
+  popup.id = 'test';
+  popup.style.position = 'absolute';
+  popup.style.top = top.toString() + 'px';
+  popup.style.left = left.toString() + 'px';
+  popup.style.width = width.toString() + 'px';
+  popup.style.margin = '0px auto';
+  popup.style.padding = '0px';
+  popup.style.zIndex = '10000';
+
+  select = document.createElement('select');
+  select.style.width = width.toString() + 'px';
+  goog.events.listen(select, 'change', goog.bind(this.selectChanged, this));
+  opts = select.options;
+
+  dp = /** @type {Array.<string>} */ (this.dataProvider);
+  n = dp.length;
+  for (i = 0; i < n; i++) {
+    opt = document.createElement('option');
+    opt.text = dp[i];
+    opts.add(opt);
+  }
+
+  select.size = n;
+
+  si = this.selectedIndex;
+  if (si < 0) {
+    select.value = null;
+  } else {
+    select.value = dp[si];
+  }
+
+  this.popup = popup;
+
+  popup.appendChild(select);
+  document.body.appendChild(popup);
+};
+
+
+Object.defineProperties(org_apache_flex_html_ComboBox.prototype, {
+    /** @expose */
+    text: {
+        /** @this {org_apache_flex_html_ComboBox} */
+        get: function() {
+            return this.element.childNodes.item(0).value;
+        },
+        /** @this {org_apache_flex_html_ComboBox} */
+        set: function(value) {
+            this.element.childNodes.item(0).value = value;
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/Container.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/Container.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/Container.js
new file mode 100644
index 0000000..534d409
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/Container.js
@@ -0,0 +1,108 @@
+/**
+ * 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_html_Container');
+
+goog.require('org_apache_flex_core_ContainerBase');
+goog.require('org_apache_flex_core_IContainer');
+
+
+
+/**
+ * @constructor
+ * @implements {org_apache_flex_core_IContainer}
+ * @extends {org_apache_flex_core_ContainerBase}
+ */
+org_apache_flex_html_Container = function() {
+  org_apache_flex_html_Container.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_Container,
+    org_apache_flex_core_ContainerBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_Container.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Container',
+                qName: 'org_apache_flex_html_Container' }],
+      interfaces: [org_apache_flex_core_IContainer] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_Container.prototype.createElement =
+    function() {
+  var cb;
+
+  this.element = document.createElement('div');
+
+  this.positioner = this.element;
+  // absolute positioned children need a non-null
+  // position value in the parent.  It might
+  // get set to 'absolute' if the container is
+  // also absolutely positioned
+  this.positioner.style.position = 'relative';
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_Container.prototype.addElement =
+    function(child) {
+  org_apache_flex_html_Container.base(this, 'addElement', child);
+  this.dispatchEvent('elementAdded');
+};
+
+
+/**
+ * @expose
+ */
+org_apache_flex_html_Container.prototype.childrenAdded =
+    function() {
+  this.dispatchEvent('childrenAdded');
+};
+
+
+/**
+ * @expose
+ * @return {Array} the HTML DOM element children.
+ */
+org_apache_flex_html_Container.prototype.internalChildren =
+    function() {
+  return this.element.children;
+};
+
+
+/**
+ * @return {Array} All of the children of the container.
+ */
+org_apache_flex_html_Container.prototype.getChildren = function() {
+  var arr = this.element.children;
+  var comparr = [];
+  var n = arr.length;
+  for (var i = 0; i < n; i++)
+  {
+    comparr.push(arr[i].flexjs_wrapper);
+  }
+  return comparr;
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/ControlBar.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/ControlBar.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/ControlBar.js
new file mode 100644
index 0000000..2ccd9ad
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/ControlBar.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_html_ControlBar');
+
+goog.require('org_apache_flex_html_Container');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_html_Container}
+ */
+org_apache_flex_html_ControlBar = function() {
+  org_apache_flex_html_ControlBar.base(this, 'constructor');
+
+};
+goog.inherits(org_apache_flex_html_ControlBar,
+    org_apache_flex_html_Container);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_ControlBar.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ControlBar',
+                qName: 'org_apache_flex_html_ControlBar'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_ControlBar.prototype.createElement =
+    function() {
+
+  this.element = document.createElement('div');
+  this.element.className = 'ControlBar';
+  this.element.style.display = 'inline';
+  this.typeNames = 'ControlBar';
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/DropDownList.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/DropDownList.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/DropDownList.js
new file mode 100644
index 0000000..d1f8d11
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/DropDownList.js
@@ -0,0 +1,124 @@
+/**
+ * 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_html_DropDownList');
+
+goog.require('org_apache_flex_core_ListBase');
+goog.require('org_apache_flex_html_beads_models_ArraySelectionModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_ListBase}
+ */
+org_apache_flex_html_DropDownList = function() {
+  org_apache_flex_html_DropDownList.base(this, 'constructor');
+  this.model = new org_apache_flex_html_beads_models_ArraySelectionModel();
+};
+goog.inherits(org_apache_flex_html_DropDownList,
+    org_apache_flex_core_ListBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_DropDownList.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'DropDownList',
+                qName: 'org_apache_flex_html_DropDownList'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_DropDownList.prototype.
+    createElement = function() {
+  this.element = document.createElement('select');
+  this.element.size = 1;
+  goog.events.listen(this.element, 'change',
+      goog.bind(this.changeHandler, this));
+  this.positioner = this.element;
+
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+Object.defineProperties(org_apache_flex_html_DropDownList.prototype, {
+    /** @expose */
+    dataProvider: {
+        /** @this {org_apache_flex_html_DropDownList} */
+        set: function(value) {
+            var dp, i, n, opt;
+
+            this.model.dataProvider = value;
+
+            dp = this.element.options;
+            n = dp.length;
+            for (i = 0; i < n; i++) {
+              dp.remove(0);
+            }
+
+            n = value.length;
+            for (i = 0; i < n; i++) {
+              opt = document.createElement('option');
+              opt.text = value[i];
+              dp.add(opt);
+            }
+        }
+    },
+    /** @expose */
+    selectedIndex: {
+        // TODO: (aharui) copied from ListBase because you
+        // can't just override the setter in a defineProps
+        // structure.
+        /** @this {org_apache_flex_html_DropDownList} */
+        get: function() {
+            return this.model.selectedIndex;
+        },
+        /** @this {org_apache_flex_html_DropDownList} */
+        set: function(value) {
+            this.model.selectedIndex = value;
+            this.element.selectedIndex = value;
+        }
+    },
+    /** @expose */
+    selectedItem: {
+        // TODO: (aharui) copied from ListBase because you
+        // can't just override the setter in a defineProps
+        // structure.
+        /** @this {org_apache_flex_html_DropDownList} */
+        get: function() {
+            return this.model.selectedItem;
+        },
+        /** @this {org_apache_flex_html_DropDownList} */
+        set: function(value) {
+            this.model.selectedItem = value;
+            this.element.selectedIndex = this.selectedIndex;
+        }
+    }
+});
+
+
+/**
+ * @protected
+ */
+org_apache_flex_html_DropDownList.prototype.changeHandler =
+    function() {
+  this.model.selectedIndex = this.element.selectedIndex;
+  this.dispatchEvent('change');
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/HContainer.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/HContainer.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/HContainer.js
new file mode 100644
index 0000000..2e850f2
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/HContainer.js
@@ -0,0 +1,42 @@
+/**
+ * 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_html_HContainer');
+
+goog.require('org_apache_flex_core_IContainer');
+goog.require('org_apache_flex_html_Container');
+
+
+
+/**
+ * @constructor
+ * @implements {org_apache_flex_core_IContainer}
+ * @extends {org_apache_flex_html_Container}
+ */
+org_apache_flex_html_HContainer = function() {
+  org_apache_flex_html_HContainer.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_HContainer,
+    org_apache_flex_html_Container);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_HContainer.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'HContainer',
+                qName: 'org_apache_flex_html_HContainer' }],
+      interfaces: [org_apache_flex_core_IContainer] };

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/HRule.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/HRule.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/HRule.js
new file mode 100644
index 0000000..d778f61
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/HRule.js
@@ -0,0 +1,44 @@
+/**
+ * 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_html_HRule');
+
+goog.require('org_apache_flex_core_UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_UIBase}
+ */
+org_apache_flex_html_HRule = function() {
+  org_apache_flex_html_HRule.base(this, 'constructor');
+
+  this.element = document.createElement('hr');
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+};
+goog.inherits(org_apache_flex_html_HRule,
+    org_apache_flex_core_UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_HRule.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'HRule',
+                qName: 'org_apache_flex_html_HRule' }] };
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/Image.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/Image.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/Image.js
new file mode 100644
index 0000000..e0e1b87
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/Image.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_html_Image');
+
+goog.require('org_apache_flex_core_UIBase');
+goog.require('org_apache_flex_html_beads_ImageView');
+goog.require('org_apache_flex_html_beads_models_ImageModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_UIBase}
+ */
+org_apache_flex_html_Image = function() {
+  org_apache_flex_html_Image.base(this, 'constructor');
+};
+goog.inherits(org_apache_flex_html_Image,
+    org_apache_flex_core_UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_Image.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Image',
+                qName: 'org_apache_flex_html_Image' }] };
+
+
+/**
+ * @override
+ * @protected
+ * @return {Object} The actual element to be parented.
+ */
+org_apache_flex_html_Image.prototype.createElement =
+    function() {
+
+  this.element = document.createElement('img');
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  this.model = new
+          org_apache_flex_html_beads_models_ImageModel();
+
+  this.addBead(new
+      org_apache_flex_html_beads_ImageView());
+
+  return this.element;
+};
+
+
+Object.defineProperties(org_apache_flex_html_Image.prototype, {
+    /** @expose */
+    source: {
+        /** @this {org_apache_flex_html_Image} */
+        get: function() {
+            return this.model.source;
+        },
+        /** @this {org_apache_flex_html_Image} */
+        set: function(value) {
+            this.model.source = value;
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/ImageAndTextButton.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/ImageAndTextButton.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/ImageAndTextButton.js
new file mode 100644
index 0000000..7413eeb
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/ImageAndTextButton.js
@@ -0,0 +1,102 @@
+/**
+ * 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_html_ImageAndTextButton');
+
+goog.require('org_apache_flex_html_Button');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_html_Button}
+ */
+org_apache_flex_html_ImageAndTextButton = function() {
+  org_apache_flex_html_ImageAndTextButton.base(this, 'constructor');
+
+  this._text = '';
+  this._src = '';
+};
+goog.inherits(org_apache_flex_html_ImageAndTextButton,
+    org_apache_flex_html_Button);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_ImageAndTextButton.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ImageAndTextButton',
+                qName: 'org_apache_flex_html_ImageAndTextButton'}] };
+
+
+/**
+ * @override
+ */
+org_apache_flex_html_ImageAndTextButton.prototype.createElement =
+    function() {
+  this.element = document.createElement('button');
+  this.element.setAttribute('type', 'button');
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  if (org_apache_flex_core_ValuesManager.valuesImpl.getValue) {
+    var impl = org_apache_flex_core_ValuesManager.valuesImpl.
+        getValue(this, 'iStatesImpl');
+  }
+
+  return this.element;
+};
+
+
+Object.defineProperties(org_apache_flex_html_ImageAndTextButton.prototype, {
+    /** @expose */
+    text: {
+        /** @this {org_apache_flex_html_ImageAndTextButton} */
+        get: function() {
+            return this._text;
+        },
+        /** @this {org_apache_flex_html_ImageAndTextButton} */
+        set: function(value) {
+            this._text = value;
+            this.setInnerHTML();
+        }
+    },
+    /** @expose */
+    image: {
+        /** @this {org_apache_flex_html_ImageAndTextButton} */
+        get: function() {
+            return this._src;
+        },
+        /** @this {org_apache_flex_html_ImageAndTextButton} */
+        set: function(value) {
+            this._src = value;
+            this.setInnerHTML();
+        }
+    }
+});
+
+
+/**
+ */
+org_apache_flex_html_ImageAndTextButton.prototype.setInnerHTML = function() {
+  var inner = '';
+  if (this._src != null)
+    inner += '<img src=\'' + this._src + '\'/>';
+  inner += '&nbsp;';
+  inner += this._text;
+  this.element.innerHTML = inner;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b677c658/frameworks/projects/HTML/js/src/org/apache/flex/html/Label.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/Label.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/Label.js
new file mode 100644
index 0000000..6ddd105
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/Label.js
@@ -0,0 +1,69 @@
+/**
+ * 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_html_Label');
+
+goog.require('org_apache_flex_core_UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_core_UIBase}
+ */
+org_apache_flex_html_Label = function() {
+  org_apache_flex_html_Label.base(this, 'constructor');
+
+  this.element = document.createElement('span');
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+};
+goog.inherits(org_apache_flex_html_Label,
+    org_apache_flex_core_UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_Label.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Label',
+                qName: 'org_apache_flex_html_Label' }] };
+
+
+Object.defineProperties(org_apache_flex_html_Label.prototype, {
+    /** @expose */
+    text: {
+        /** @this {org_apache_flex_html_Label} */
+        get: function() {
+            return this.element.innerHTML;
+        },
+        /** @this {org_apache_flex_html_Label} */
+        set: function(value) {
+            this.element.innerHTML = value;
+        }
+    },
+    /** @expose */
+    html: {
+        /** @this {org_apache_flex_html_Label} */
+        get: function() {
+            return this.element.innerHTML;
+        },
+        /** @this {org_apache_flex_html_Label} */
+        set: function(value) {
+            this.element.innerHTML = value;
+        }
+    }
+});