You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/03/25 22:03:37 UTC

[05/35] remove staticControls folders and move components up a level. Next commit will rename packages inside the files

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/List.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/List.js b/frameworks/js/FlexJS/src/org/apache/flex/html/List.js
new file mode 100644
index 0000000..c554129
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/List.js
@@ -0,0 +1,176 @@
+/**
+ * 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.staticControls.List');
+
+goog.require('mx.core.IFactory');
+goog.require('org.apache.flex.core.IDataProviderItemRendererMapper');
+goog.require('org.apache.flex.core.IItemRendererClassFactory');
+goog.require('org.apache.flex.core.ItemRendererClassFactory');
+goog.require('org.apache.flex.core.ListBase');
+goog.require('org.apache.flex.core.ValuesManager');
+goog.require('org.apache.flex.html.staticControls.beads.ListView');
+goog.require('org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData');
+goog.require('org.apache.flex.html.staticControls.beads.controllers.ListSingleSelectionMouseController');
+goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
+goog.require('org.apache.flex.html.staticControls.supportClasses.DataItemRenderer');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.ListBase}
+ */
+org.apache.flex.html.staticControls.List = function() {
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.List,
+    org.apache.flex.core.ListBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.List.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'List',
+                qName: 'org.apache.flex.html.staticControls.List' }] };
+
+
+/**
+ * @expose
+ * @return {mx.core.IFactory} The itemRenderer generator.
+ */
+org.apache.flex.html.staticControls.List.prototype.get_itemRenderer =
+function() {
+  return this.itemRenderer_;
+};
+
+
+/**
+ * @expose
+ * @param {mx.core.IFactory} value The itemRenderer generator.
+ */
+org.apache.flex.html.staticControls.List.prototype.set_itemRenderer =
+function(value) {
+  this.itemRenderer_ = value;
+};
+
+
+/**
+ * @expose
+ * @return {String} The name of the field to use as a label.
+ */
+org.apache.flex.html.staticControls.List.prototype.get_labelField =
+function() {
+  return this.get_model().get_labelField();
+};
+
+
+/**
+ * @expose
+ * @param {String} value The name of the field to use as a label.
+ */
+org.apache.flex.html.staticControls.List.prototype.set_labelField =
+function(value) {
+  this.get_model().set_labelField(value);
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.List.prototype.createElement =
+    function() {
+  goog.base(this, 'createElement');
+  this.set_className('List');
+
+  return this.element;
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.List.prototype.addedToParent =
+    function() {
+  goog.base(this, 'addedToParent');
+
+  var b = this.getBeadByType(org.apache.flex.core.IDataProviderItemRendererMapper);
+  if (org.apache.flex.core.ValuesManager.valuesImpl.getValue && !b) {
+    /**
+     * @type {Function}
+     */
+    var c;
+    c = /** @type {Function} */ (org.apache.flex.core.ValuesManager.valuesImpl.getValue(this,
+                            'iDataProviderItemRendererMapper'));
+    if (c) {
+      var bead = new c();
+      this.addBead(bead);
+    }
+  }
+//  var c = this.getBeadByType(org.apache.flex.core.IItemRenderer);
+//  if (c == null) {
+//    c = this.getBeadByType(
+//          org.apache.flex.html.staticControls.supportClasses.DataItemRenderer);
+//    if (c == null) {
+//      this.addBead(new
+//                   org.apache.flex.html.staticControls.beads.
+//                   TextItemRendererFactoryForArrayData());
+//    }
+//  }
+};
+
+
+/**
+ * @expose
+ * @return {Array.<Object>} An array of objects that make up the actual
+ *                          list (most likely itemRenderers).
+ */
+org.apache.flex.html.staticControls.List.prototype.internalChildren =
+    function() {
+  var listView =
+      this.getBeadByType(org.apache.flex.html.staticControls.beads.ListView);
+  var dg = listView.get_dataGroup();
+  var items = null;
+  if (dg.renderers) {
+    items = dg.renderers;
+  }
+  return items;
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event that triggered the selection.
+ */
+org.apache.flex.html.staticControls.List.prototype.selectedHandler =
+    function(event) {
+  var itemRenderer = event.currentTarget;
+  if (this.renderers) {
+    var n = this.renderers.length;
+    var i;
+    for (i = 0; i < n; i++) {
+      var test = this.renderers[i];
+      if (test == itemRenderer) {
+        this.model.set_selectedIndex(i);
+        itemRenderer.set_selected(true);
+      }
+      else {
+        test.set_selected(false);
+      }
+    }
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/NumericStepper.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/NumericStepper.js b/frameworks/js/FlexJS/src/org/apache/flex/html/NumericStepper.js
new file mode 100644
index 0000000..66926ef
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/NumericStepper.js
@@ -0,0 +1,185 @@
+/**
+ * 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.staticControls.NumericStepper');
+
+goog.require('org.apache.flex.core.UIBase');
+goog.require('org.apache.flex.html.staticControls.Spinner');
+goog.require('org.apache.flex.html.staticControls.TextInput');
+goog.require('org.apache.flex.html.staticControls.beads.models.RangeModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.UIBase}
+ */
+org.apache.flex.html.staticControls.NumericStepper = function() {
+  this.model =
+      new org.apache.flex.html.staticControls.beads.models.RangeModel();
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.NumericStepper,
+    org.apache.flex.core.UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'NumericStepper',
+                qName: 'org.apache.flex.html.staticControls.NumericStepper' }] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.createElement =
+    function() {
+  this.element = document.createElement('div');
+  this.positioner = this.element;
+
+  this.input = new org.apache.flex.html.staticControls.TextInput();
+  this.addElement(this.input);
+  this.input.positioner.style.display = 'inline-block';
+
+  this.spinner = new org.apache.flex.html.staticControls.Spinner();
+  this.addElement(this.spinner);
+  this.spinner.positioner.style.display = 'inline-block';
+  goog.events.listen(this.spinner, 'valueChanged',
+      goog.bind(this.spinnerChange, this));
+
+  this.element.flexjs_wrapper = this;
+  this.set_className('NumericStepper');
+
+  this.input.set_text(String(this.spinner.get_value()));
+
+  return this.element;
+};
+
+
+/**
+ * @param {Object} event The input event.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.spinnerChange =
+    function(event)
+    {
+  var newValue = this.spinner.get_value();
+  this.set_value(newValue);
+  this.input.set_text(String(this.spinner.get_value()));
+  this.dispatchEvent(new org.apache.flex.events.Event('valueChanged'));
+};
+
+
+/**
+ * @expose
+ * @return {Number} The current minimum value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.get_minimum =
+    function() {
+  return this.model.get_minimum();
+};
+
+
+/**
+ * @expose
+ * @param {Number} value The new minimum value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.set_minimum =
+    function(value) {
+  this.model.set_minimum(value);
+};
+
+
+/**
+ * @expose
+ * @return {Number} The current maximum value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.get_maximum =
+    function() {
+  return this.model.get_maximum();
+};
+
+
+/**
+ * @expose
+ * @param {Number} value The new maximum value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.set_maximum =
+    function(value) {
+  this.model.set_maximum(value);
+};
+
+
+/**
+ * @expose
+ * @return {Number} The current value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.get_value =
+    function() {
+  return this.model.get_value();
+};
+
+
+/**
+ * @expose
+ * @param {Number} newValue The new value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.set_value =
+    function(newValue) {
+  this.model.set_value(newValue);
+};
+
+
+/**
+ * @expose
+ * @return {Number} The current snapInterval value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.get_snapInterval =
+    function() {
+  return this.model.get_snapInterval();
+};
+
+
+/**
+ * @expose
+ * @param {Number} value The new snapInterval value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.set_snapInterval =
+    function(value) {
+  this.model.set_snapInterval(value);
+};
+
+
+/**
+ * @expose
+ * @return {Number} The current stepSize value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.get_stepSize =
+    function() {
+  return this.model.get_stepSize();
+};
+
+
+/**
+ * @expose
+ * @param {Number} value The new stepSize value.
+ */
+org.apache.flex.html.staticControls.NumericStepper.prototype.set_stepSize =
+    function(value) {
+  this.model.set_stepSize(value);
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/Panel.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/Panel.js b/frameworks/js/FlexJS/src/org/apache/flex/html/Panel.js
new file mode 100644
index 0000000..88a22b5
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/Panel.js
@@ -0,0 +1,186 @@
+/**
+ * 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.staticControls.Panel');
+
+goog.require('org.apache.flex.html.staticControls.Container');
+goog.require('org.apache.flex.html.staticControls.ControlBar');
+goog.require('org.apache.flex.html.staticControls.TitleBar');
+goog.require('org.apache.flex.html.staticControls.beads.PanelView');
+goog.require('org.apache.flex.html.staticControls.beads.models.PanelModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.html.staticControls.Container}
+ */
+org.apache.flex.html.staticControls.Panel = function() {
+  this.model =
+      new org.apache.flex.html.staticControls.beads.models.PanelModel();
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.Panel,
+    org.apache.flex.html.staticControls.Container);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.Panel.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Panel',
+                qName: 'org.apache.flex.html.staticControls.Panel' }] };
+
+
+/**
+ * @override
+ * @param {Object} c Element being added.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.addElement = function(c) {
+  if (c == this.titleBar) {
+    this.element.insertBefore(this.titleBar.element, this.contentArea);
+  }
+  else if (c == this.controlBar) {
+    this.element.appendChild(c.element);
+  }
+  else {
+    this.contentArea.appendChild(c.element);
+  }
+  c.addedToParent();
+};
+
+
+/**
+ * @override
+ * @param {Object} c The child element.
+ * @param {number} index The index.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.addElementAt =
+    function(c, index) {
+  var children = this.internalChildren();
+  if (index >= children.length)
+    this.addElement(c);
+  else
+  {
+    this.contentArea.insertBefore(c.element,
+        children[index]);
+    c.addedToParent();
+  }
+};
+
+
+/**
+ * @override
+ * @param {Object} c The child element.
+ * @return {number} The index in parent.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.getElementIndex =
+    function(c) {
+  var children = this.internalChildren();
+  var n = children.length;
+  for (var i = 0; i < n; i++)
+  {
+    if (children[i] == c.element)
+      return i;
+  }
+  return -1;
+};
+
+
+/**
+ * @override
+ * @param {Object} c The child element.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.removeElement =
+    function(c) {
+  this.contentArea.removeChild(c.element);
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.Panel.prototype.createElement =
+    function() {
+
+  this.element = document.createElement('div');
+  this.element.className = 'Panel';
+
+  this.contentArea = document.createElement('div');
+  this.contentArea.flexjs_wrapper = this;
+  this.element.appendChild(this.contentArea);
+
+  this.panelView = new org.apache.flex.html.staticControls.beads.PanelView();
+  this.panelView.set_strand(this);
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.Panel.prototype.addedToParent =
+    function() {
+  goog.base(this, 'addedToParent');
+};
+
+
+/**
+ * @expose
+ * @return {string} The title getter.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.get_title = function() {
+  return this.model.get_title();
+};
+
+
+/**
+ * @expose
+ * @param {string} value The title setter.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.set_title =
+    function(value) {
+  this.model.set_title(value);
+};
+
+
+/**
+ * @expose
+ * @return {Array} The controlBar getter.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.get_controlBar =
+    function() {
+  return this.controlBarChildren;
+};
+
+
+/**
+ * @expose
+ * @param {Array} value The controlBar setter.
+ */
+org.apache.flex.html.staticControls.Panel.prototype.set_controlBar =
+    function(value) {
+  this.controlBarChildren = value;
+
+  for (var i = 0; i < value.length; i++) {
+    var item = value[i];
+    this.controlBar.addElement(item);
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/RadioButton.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/RadioButton.js b/frameworks/js/FlexJS/src/org/apache/flex/html/RadioButton.js
new file mode 100644
index 0000000..5713e3d
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/RadioButton.js
@@ -0,0 +1,197 @@
+/**
+ * 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.staticControls.RadioButton');
+
+goog.require('org.apache.flex.core.UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.UIBase}
+ */
+org.apache.flex.html.staticControls.RadioButton = function() {
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.RadioButton,
+    org.apache.flex.core.UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'RadioButton',
+                qName: 'org.apache.flex.html.staticControls.RadioButton'}] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.createElement =
+    function() {
+  var rb;
+
+  this.element = document.createElement('label');
+
+  rb = document.createElement('input');
+  rb.type = 'radio';
+  this.element.appendChild(rb);
+  this.element.appendChild(document.createTextNode('radio button'));
+
+  this.positioner = this.element;
+  rb.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+/**
+ * @expose
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.initModel =
+    function() {
+};
+
+
+/**
+ * @expose
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.initSkin =
+    function() {
+};
+
+
+/**
+ * @expose
+ * @return {string} The groupName getter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.get_groupName =
+    function() {
+  return this.element.childNodes.item(0).name;
+};
+
+
+/**
+ * @expose
+ * @param {string} value The groupName setter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.set_groupName =
+    function(value) {
+  this.element.childNodes.item(0).name = value;
+};
+
+
+/**
+ * @expose
+ * @return {string} The text getter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.get_text =
+    function() {
+  return this.element.childNodes.item(1).nodeValue;
+};
+
+
+/**
+ * @expose
+ * @param {string} value The text setter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.set_text =
+    function(value) {
+  this.element.childNodes.item(1).nodeValue = value;
+};
+
+
+/**
+ * @expose
+ * @return {boolean} The selected getter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.get_selected =
+    function() {
+  return this.element.childNodes.item(0).checked;
+};
+
+
+/**
+ * @expose
+ * @param {boolean} value The selected setter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.set_selected =
+    function(value) {
+  this.element.childNodes.item(0).checked = value;
+};
+
+
+/**
+ * @expose
+ * @return {Object} The value getter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.get_value =
+    function() {
+  return this.element.childNodes.item(0).value;
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The value setter.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.set_value =
+    function(value) {
+  this.element.childNodes.item(0).value = value;
+};
+
+
+/**
+ * @expose
+ * @return {Object} The value of the selected RadioButton.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.get_selectedValue =
+    function() {
+  var buttons, groupName, i, n;
+
+  groupName = this.element.childNodes.item(0).name;
+  buttons = document.getElementsByName(groupName);
+  n = buttons.length;
+
+  for (i = 0; i < n; i++) {
+    if (buttons[i].checked) {
+      return buttons[i].value;
+    }
+  }
+  return null;
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The value of the selected RadioButton.
+ */
+org.apache.flex.html.staticControls.RadioButton.prototype.set_selectedValue =
+    function(value) {
+  var buttons, groupName, i, n;
+
+  groupName = this.element.childNodes.item(0).name;
+  buttons = document.getElementsByName(groupName);
+  n = buttons.length;
+  for (i = 0; i < n; i++) {
+    if (buttons[i].value === value) {
+      buttons[i].checked = true;
+      break;
+    }
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleAlert.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleAlert.js b/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleAlert.js
new file mode 100644
index 0000000..5fc3530
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleAlert.js
@@ -0,0 +1,51 @@
+/**
+ * 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.staticControls.SimpleAlert');
+
+goog.require('org.apache.flex.core.UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.UIBase}
+ */
+org.apache.flex.html.staticControls.SimpleAlert = function() {
+  goog.base(this);
+
+};
+goog.inherits(org.apache.flex.html.staticControls.SimpleAlert,
+    org.apache.flex.core.UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.SimpleAlert.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'SimpleAlert',
+                qName: 'org.apache.flex.html.staticControls.SimpleAlert'}] };
+
+
+/**
+ * @param {string} message The message to display in the alert.
+ * @param {Object} host The host that should display the alert.
+ */
+org.apache.flex.html.staticControls.SimpleAlert.show =
+    function(message, host) {
+
+  alert(message);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleList.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleList.js b/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleList.js
new file mode 100644
index 0000000..79e40ef
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/SimpleList.js
@@ -0,0 +1,129 @@
+/**
+ * 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.staticControls.SimpleList');
+
+goog.require('org.apache.flex.core.ListBase');
+goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.ListBase}
+ */
+org.apache.flex.html.staticControls.SimpleList = function() {
+  goog.base(this);
+  this.model = new org.apache.flex.html.staticControls.
+      beads.models.ArraySelectionModel();
+};
+goog.inherits(org.apache.flex.html.staticControls.SimpleList,
+    org.apache.flex.core.ListBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'SimpleList',
+                qName: 'org.apache.flex.html.staticControls.SimpleList'}] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.
+    createElement = function() {
+  this.element = document.createElement('select');
+  this.element.size = 5;
+  goog.events.listen(this.element, 'change',
+      goog.bind(this.changeHandler, this));
+  this.positioner = this.element;
+  this.set_className('SimpleList');
+
+  return this.element;
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.
+    get_dataProvider = function() {
+  return this.model.get_dataProvider();
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.
+    set_dataProvider = function(value) {
+  var dp, i, n, opt;
+
+  this.model.set_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].toString();
+    dp.add(opt);
+  }
+
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.
+    get_selectedIndex = function() {
+  return this.model.get_selectedIndex();
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.
+    set_selectedIndex = function(value) {
+  this.model.set_selectedIndex(value);
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.
+    get_selectedItem = function() {
+  return this.model.get_selectedItem();
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.SimpleList.prototype.
+    set_selectedItem = function(value) {
+  this.model.set_selectedItem(value);
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/Slider.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/Slider.js b/frameworks/js/FlexJS/src/org/apache/flex/html/Slider.js
new file mode 100644
index 0000000..6a19bd4
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/Slider.js
@@ -0,0 +1,219 @@
+/**
+ * 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.staticControls.Slider');
+
+goog.require('org.apache.flex.core.UIBase');
+goog.require('org.apache.flex.html.staticControls.beads.SliderThumbView');
+goog.require('org.apache.flex.html.staticControls.beads.SliderTrackView');
+goog.require('org.apache.flex.html.staticControls.beads.controllers.SliderMouseController');
+goog.require('org.apache.flex.html.staticControls.beads.models.RangeModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.UIBase}
+ */
+org.apache.flex.html.staticControls.Slider = function() {
+  this.model =
+      new org.apache.flex.html.staticControls.beads.models.RangeModel();
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.Slider,
+    org.apache.flex.core.UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.Slider.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Slider',
+                qName: 'org.apache.flex.html.staticControls.Slider'}] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.Slider.prototype.createElement =
+    function() {
+
+  this.element = document.createElement('div');
+  this.element.style.width = '200px';
+  this.element.style.height = '30px';
+
+  this.track = new org.apache.flex.html.staticControls.beads.SliderTrackView();
+  this.addBead(this.track);
+
+  this.thumb = new org.apache.flex.html.staticControls.beads.SliderThumbView();
+  this.addBead(this.thumb);
+
+  this.controller = new org.apache.flex.html.staticControls.beads.controllers.
+                    SliderMouseController();
+  this.addBead(this.controller);
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  this.set_className('Slider');
+
+  return this.element;
+};
+
+
+/**
+ * @expose
+ * @return {number} The value getter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.get_value =
+    function() {
+  return this.model.get_value();
+};
+
+
+/**
+ * @expose
+ * @param {Object} newValue The new value.
+ * @return {void} The value setter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.set_value =
+    function(newValue) {
+  this.model.set_value(newValue);
+  this.setThumbFromValue(this.model.get_value());
+};
+
+
+/**
+ * @expose
+ * @return {number} The minimum getter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.get_minimum =
+    function() {
+  return this.model.get_minimum();
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The new minimum value.
+ * @return {void} The minimum setter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.set_minimum =
+    function(value) {
+  this.model.set_minimum(value);
+};
+
+
+/**
+ * @expose
+ * @return {number} The maximum getter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.get_maximum =
+    function() {
+  return this.model.get_maximum();
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The new maximum value.
+ * @return {void} The maximum setter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.set_maximum =
+    function(value) {
+  this.model.set_maximum(value);
+};
+
+
+/**
+ * @expose
+ * @return {number} The snapInterval getter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.get_snapInterval =
+    function() {
+  return this.model.get_snapInterval();
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The new snapInterval value.
+ * @return {void} The snapInterval setter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.set_snapInterval =
+    function(value) {
+  this.model.set_snapInterval(value);
+};
+
+
+/**
+ * @expose
+ * @return {number} The stepSize getter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.get_stepSize =
+    function() {
+  return this.model.get_stepSize();
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The new stepSize value.
+ * @return {void} The stepSize setter.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.set_stepSize =
+    function(value) {
+  this.model.set_stepSize(value);
+};
+
+
+/**
+ * @param {Object} value The current value.
+ * @return {number} Calculates the new value based snapInterval and stepSize.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.snap = function(value)
+    {
+  var si = this.get_snapInterval();
+  var n = Math.round((value - this.get_minimum()) / si) *
+      si + this.get_minimum();
+  if (value > 0)
+  {
+    if (value - n < n + si - value)
+      return n;
+    return n + si;
+  }
+  if (value - n > n + si - value)
+    return n + si;
+  return n;
+};
+
+
+/**
+ * @param {number} value The value used to calculate new position of the thumb.
+ * @return {void} Moves the thumb to the corresponding position.
+ */
+org.apache.flex.html.staticControls.Slider.prototype.setThumbFromValue =
+    function(value)
+    {
+  var min = this.model.get_minimum();
+  var max = this.model.get_maximum();
+  var p = (value - min) / (max - min);
+  var xloc = p * (parseInt(this.track.element.style.width, 10) -
+             parseInt(this.thumb.element.style.width, 10));
+
+  this.thumb.element.style.left = String(xloc) + 'px';
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/Spinner.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/Spinner.js b/frameworks/js/FlexJS/src/org/apache/flex/html/Spinner.js
new file mode 100644
index 0000000..8911105
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/Spinner.js
@@ -0,0 +1,211 @@
+/**
+ * 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.staticControls.Spinner');
+
+goog.require('org.apache.flex.core.UIBase');
+goog.require('org.apache.flex.html.staticControls.TextButton');
+goog.require('org.apache.flex.html.staticControls.beads.controllers.SpinnerMouseController');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.UIBase}
+ */
+org.apache.flex.html.staticControls.Spinner = function() {
+  goog.base(this);
+
+  this.minimum_ = 0;
+  this.maximum_ = 100;
+  this.value_ = 1;
+  this.stepSize_ = 1;
+  this.snapInterval_ = 1;
+};
+goog.inherits(org.apache.flex.html.staticControls.Spinner,
+    org.apache.flex.core.UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Spinner',
+                qName: 'org.apache.flex.html.staticControls.Spinner'}] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.createElement =
+    function() {
+  this.element = document.createElement('div');
+  this.positioner = this.element;
+
+  this.element.style.verticalAlign = 'middle';
+
+  this.incrementButton = new org.apache.flex.html.staticControls.TextButton();
+  this.incrementButton.set_text('\u2191');
+  this.addElement(this.incrementButton);
+
+  this.decrementButton = new org.apache.flex.html.staticControls.TextButton();
+  this.decrementButton.set_text('\u2193');
+  this.addElement(this.decrementButton);
+
+  this.controller = new org.apache.flex.html.staticControls.
+      beads.controllers.SpinnerMouseController();
+  this.addBead(this.controller);
+
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+/**
+ * @expose
+ * @return {number} The current value.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.get_value =
+    function() {
+  return this.value_;
+};
+
+
+/**
+ * @expose
+ * @param {number} value The new value.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.set_value =
+    function(value) {
+  if (value != this.value_) {
+    this.value_ = value;
+    this.dispatchEvent('valueChanged');
+  }
+};
+
+
+/**
+ * @expose
+ * @return {number} The minimum value.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.get_minimum = function() {
+  return this.minimum_;
+};
+
+
+/**
+ * @expose
+ * @param {number} value The new minimum value.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.set_minimum =
+    function(value) {
+  if (value != this.minimum_) {
+    this.minimum_ = value;
+    this.dispatchEvent('minimumChanged');
+  }
+};
+
+
+/**
+ * @expose
+ * @return {number} The maximum value.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.get_maximum =
+    function() {
+  return this.maximum_;
+};
+
+
+/**
+ * @expose
+ * @param {number} value The new maximum setter.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.set_maximum =
+    function(value) {
+  if (value != this.maximum_) {
+    this.maximum_ = value;
+    this.dispatchEvent('maximumChanged');
+  }
+};
+
+
+/**
+ * @expose
+ * @return {number} The snapInterval.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.get_snapInterval =
+    function() {
+  return this.snapInterval_;
+};
+
+
+/**
+ * @expose
+ * @param {number} value The new snapInterval value.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.set_snapInterval =
+    function(value) {
+  if (value != this.snapInterval_) {
+    this.snapInterval_ = value;
+    this.dispatchEvent('snapIntervalChanged');
+  }
+};
+
+
+/**
+ * @expose
+ * @return {number} The stepSize.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.get_stepSize =
+    function() {
+  return this.stepSize_;
+};
+
+
+/**
+ * @expose
+ * @param {number} value The new stepSize value.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.set_stepSize =
+    function(value) {
+  if (value != this.stepSize_) {
+    this.stepSize_ = value;
+    this.dispatchEvent('stepSizeChanged');
+  }
+};
+
+
+/**
+ * @param {number} value The proposed value.
+ * @return {number} The new value based on snapInterval
+ * and stepSize.
+ */
+org.apache.flex.html.staticControls.Spinner.prototype.snap = function(value)
+    {
+  var si = this.snapInterval_;
+  var n = Math.round((value - this.minimum_) / si) * si + this.minimum_;
+  if (value > 0)
+  {
+    if (value - n < n + si - value)
+      return n;
+    return n + si;
+  }
+  if (value - n > n + si - value)
+    return n + si;
+  return n;
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/TextArea.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/TextArea.js b/frameworks/js/FlexJS/src/org/apache/flex/html/TextArea.js
new file mode 100644
index 0000000..2e018e5
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/TextArea.js
@@ -0,0 +1,72 @@
+/**
+ * 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.staticControls.TextArea');
+
+goog.require('org.apache.flex.core.UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.UIBase}
+ */
+org.apache.flex.html.staticControls.TextArea = function() {
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.TextArea,
+    org.apache.flex.core.UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.TextArea.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TextArea',
+                qName: 'org.apache.flex.html.staticControls.TextArea'}] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.TextArea.prototype.createElement =
+    function() {
+
+  this.element = document.createElement('textarea');
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+/**
+ * @expose
+ * @return {string} The text getter.
+ */
+org.apache.flex.html.staticControls.TextArea.prototype.get_text = function() {
+  return this.element.value;
+};
+
+
+/**
+ * @expose
+ * @param {string} value The text setter.
+ */
+org.apache.flex.html.staticControls.TextArea.prototype.set_text =
+    function(value) {
+  this.element.value = value;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/TextButton.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/TextButton.js b/frameworks/js/FlexJS/src/org/apache/flex/html/TextButton.js
new file mode 100644
index 0000000..882b178
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/TextButton.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.staticControls.TextButton');
+
+goog.require('org.apache.flex.html.staticControls.Button');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.html.staticControls.Button}
+ */
+org.apache.flex.html.staticControls.TextButton = function() {
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.TextButton,
+    org.apache.flex.html.staticControls.Button);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.TextButton.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TextButton',
+                qName: 'org.apache.flex.html.staticControls.TextButton'}] };
+
+
+/**
+ * @expose
+ * @return {string} The text getter.
+ */
+org.apache.flex.html.staticControls.TextButton.prototype.get_text = function() {
+  return this.element.innerHTML;
+};
+
+
+/**
+ * @expose
+ * @param {string} value The text setter.
+ */
+org.apache.flex.html.staticControls.TextButton.prototype.set_text =
+    function(value) {
+  this.element.innerHTML = value;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js b/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js
new file mode 100644
index 0000000..48cccab
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js
@@ -0,0 +1,95 @@
+/**
+ * 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.staticControls.TextInput');
+
+goog.require('org.apache.flex.core.UIBase');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.UIBase}
+ */
+org.apache.flex.html.staticControls.TextInput = function() {
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.TextInput,
+    org.apache.flex.core.UIBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.TextInput.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TextInput',
+                qName: 'org.apache.flex.html.staticControls.TextInput'}] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.TextInput.prototype.createElement = function() {
+  this.element = document.createElement('input');
+  this.element.setAttribute('type', 'input');
+
+  //attach input handler to dispatch flexjs change event when user write in textinput
+  //goog.events.listen(this.element, 'change', goog.bind(this.killChangeHandler, this));
+  goog.events.listen(this.element, 'input', goog.bind(this.inputChangeHandler_, this));
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  return this.element;
+};
+
+
+/**
+ * @expose
+ * @return {string} The text getter.
+ */
+org.apache.flex.html.staticControls.TextInput.prototype.get_text = function() {
+  return this.element.value;
+};
+
+
+/**
+ * @expose
+ * @param {string} value The text setter.
+ */
+org.apache.flex.html.staticControls.TextInput.prototype.set_text = function(value) {
+  this.element.value = value;
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event.
+ */
+/*org.apache.flex.html.staticControls.TextInput.prototype.killChangeHandler = function(event) {
+    //event.preventDefault();
+};*/
+
+
+/**
+ * @private
+ * @param {Object} event The event.
+ */
+org.apache.flex.html.staticControls.TextInput.prototype.inputChangeHandler_ = function(event) {
+  event.stopPropagation();
+
+  this.dispatchEvent(new org.apache.flex.events.Event(org.apache.flex.events.Event.EventType.CHANGE));
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/TitleBar.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/TitleBar.js b/frameworks/js/FlexJS/src/org/apache/flex/html/TitleBar.js
new file mode 100644
index 0000000..36f9322
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/TitleBar.js
@@ -0,0 +1,150 @@
+/**
+ * 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.staticControls.TitleBar');
+
+goog.require('org.apache.flex.html.staticControls.Container');
+goog.require('org.apache.flex.html.staticControls.Label');
+goog.require('org.apache.flex.html.staticControls.TextButton');
+goog.require('org.apache.flex.html.staticControls.beads.models.TitleBarModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.html.staticControls.Container}
+ */
+org.apache.flex.html.staticControls.TitleBar = function() {
+
+  this.model =
+      new org.apache.flex.html.staticControls.beads.models.TitleBarModel();
+
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.html.staticControls.TitleBar,
+    org.apache.flex.html.staticControls.Container);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TitleBar',
+                qName: 'org.apache.flex.html.staticControls.TitleBar'}] };
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.createElement =
+    function() {
+
+  this.element = document.createElement('div');
+
+  this.titleLabel = new org.apache.flex.html.staticControls.Label();
+  this.addElement(this.titleLabel);
+  this.titleLabel.element.id = 'title';
+  this.titleLabel.positioner.style.display = 'inline-block';
+  this.titleLabel.set_className('TitleBarLabel');
+
+  this.titleButton = new org.apache.flex.html.staticControls.TextButton();
+  this.addElement(this.titleButton);
+  this.titleButton.element.id = 'closeButton';
+  this.titleButton.text = 'Close';
+  this.titleButton.positioner.style.position = 'absolute';
+  this.titleButton.positioner.style.right = '0px';
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+
+  this.set_className('TitleBar');
+
+  // listen for changes to the model so items can be changed in the view
+  this.model.addEventListener('titleChange',
+      goog.bind(this.changeHandler, this));
+
+  return this.element;
+};
+
+
+/**
+ * @override
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.addedToParent =
+    function() {
+
+  this.titleLabel.set_text(this.model.get_title());
+
+  if (this.model.showCloseButton) {
+    this.titleButton.positioner.style.display = 'inline-block';
+  } else {
+    this.titleButton.positioner.style.display = 'none';
+  }
+};
+
+
+/**
+ * @param {Object} event The event that triggered this handler.
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.changeHandler =
+    function(event) {
+  if (event.type == 'titleChange') {
+    this.titleLabel.set_text(this.model.get_title());
+  }
+  else if (event.type == 'htmlTitleChange') {
+    this.titleLabel.set_text(this.model.get_htmlTitle());
+  }
+};
+
+
+/**
+ * @expose
+ * @return {string} The title getter.
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.get_title =
+    function() {
+  return this.model.get_title();
+};
+
+
+/**
+ * @expose
+ * @param {string} value The title setter.
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.set_title =
+    function(value) {
+  this.model.set_title(value);
+};
+
+
+/**
+ * @expose
+ * @return {string} The showCloseButton getter.
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.get_showCloseButton =
+    function() {
+  return this.model.get_showCloseButton();
+};
+
+
+/**
+ * @expose
+ * @param {string} value The title setter.
+ */
+org.apache.flex.html.staticControls.TitleBar.prototype.set_showCloseButton =
+    function(value) {
+  this.model.set_showCloseButton(value);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/NumericOnlyTextInputBead.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/NumericOnlyTextInputBead.js b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/NumericOnlyTextInputBead.js
new file mode 100644
index 0000000..13a5ae9
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/NumericOnlyTextInputBead.js
@@ -0,0 +1,91 @@
+/**
+ * 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.staticControls.accessories.NumericOnlyTextInputBead');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead =
+    function() {
+
+  /**
+   * @protected
+   * @type {Object}
+   */
+  this.promptElement = null;
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'NumericOnlyTextInputBead',
+                qName: 'org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead' }] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead.
+    prototype.set_strand = function(value) {
+  if (this.strand_ !== value) {
+    this.strand_ = value;
+    value.addEventListener('keypress', goog.bind(this.validateInput, this));
+  }
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The input to validate?
+ */
+org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead.
+    prototype.validateInput = function(event) {
+
+  var code = event.charCode;
+
+  // backspace or delete
+  if (event.keyCode == 8 || event.keyCode == 46) return;
+
+  // tab or return/enter
+  if (event.keyCode == 9 || event.keyCode == 13) return;
+
+  // left or right cursor arrow
+  if (event.keyCode == 37 || event.keyCode == 39) return;
+
+  var key = String.fromCharCode(code);
+
+  var regex = /[0-9]|\./;
+  if (!regex.test(key)) {
+    event.returnValue = false;
+    if (event.preventDefault) event.preventDefault();
+    return;
+  }
+  var cursorStart = event.target.selectionStart;
+  var cursorEnd = event.target.selectionEnd;
+  var left = event.target.value.substring(0, cursorStart);
+  var right = event.target.value.substr(cursorEnd);
+  var complete = left + key + right;
+  if (isNaN(complete)) {
+    event.returnValue = false;
+    if (event.preventDefault) event.preventDefault();
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/PasswordInputBead.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/PasswordInputBead.js b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/PasswordInputBead.js
new file mode 100644
index 0000000..cd5baf7
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/PasswordInputBead.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.html.staticControls.accessories.PasswordInputBead');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.accessories.PasswordInputBead =
+    function() {
+
+  /**
+   * @protected
+   * @type {Object}
+   */
+  this.promptElement = null;
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.accessories.PasswordInputBead.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'PasswordInputBead',
+                qName: 'org.apache.flex.html.staticControls.accessories.PasswordInputBead' }] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.accessories.PasswordInputBead.
+    prototype.set_strand = function(value) {
+  if (this.strand_ !== value) {
+    this.strand_ = value;
+    value.element.type = 'password';
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/TextPromptBead.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/TextPromptBead.js b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/TextPromptBead.js
new file mode 100644
index 0000000..444f370
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/accessories/TextPromptBead.js
@@ -0,0 +1,72 @@
+/**
+ * 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.staticControls.accessories.TextPromptBead');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.accessories.TextPromptBead = function() {
+
+  /**
+   * @protected
+   * @type {Object}
+   */
+  this.promptElement = null;
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.accessories.TextPromptBead.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TextPromptBead',
+                qName: 'org.apache.flex.html.staticControls.accessories.TextPromptBead' }] };
+
+
+/**
+ * @expose
+ * @return {string} value The new prompt.
+ */
+org.apache.flex.html.staticControls.accessories.TextPromptBead.prototype.
+    get_prompt = function() {
+  return this.prompt;
+};
+
+
+/**
+ * @expose
+ * @param {string} value The new prompt.
+ */
+org.apache.flex.html.staticControls.accessories.TextPromptBead.prototype.
+    set_prompt = function(value) {
+  this.prompt = value;
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.accessories.TextPromptBead.prototype.
+    set_strand = function(value) {
+  if (this.strand_ !== value) {
+    this.strand_ = value;
+    value.element.placeholder = this.prompt;
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ButtonBarView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ButtonBarView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ButtonBarView.js
new file mode 100644
index 0000000..2801b9f
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ButtonBarView.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.staticControls.beads.ButtonBarView');
+
+goog.require('org.apache.flex.html.staticControls.beads.ListView');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.html.staticControls.beads.ListView}
+ */
+org.apache.flex.html.staticControls.beads.ButtonBarView = function() {
+  this.lastSelectedIndex = -1;
+  goog.base(this);
+
+  this.className = 'ButtonBarView';
+};
+goog.inherits(
+    org.apache.flex.html.staticControls.beads.ButtonBarView,
+    org.apache.flex.html.staticControls.beads.ListView);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.ButtonBarView.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ButtonBarView',
+                qName: 'org.apache.flex.html.staticControls.beads.ButtonBarView' }] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.beads.ButtonBarView.prototype.set_strand =
+    function(value) {
+
+  goog.base(this, 'set_strand', value);
+  this.strand_ = value;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
new file mode 100644
index 0000000..f461ef7
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
@@ -0,0 +1,137 @@
+/**
+ * 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.staticControls.beads.DataItemRendererFactoryForArrayData');
+
+goog.require('org.apache.flex.core.IDataProviderItemRendererMapper');
+goog.require('org.apache.flex.events.EventDispatcher');
+goog.require('org.apache.flex.html.staticControls.beads.ListView');
+goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
+goog.require('org.apache.flex.html.staticControls.supportClasses.ButtonBarButtonItemRenderer');
+
+
+
+/**
+ * @constructor
+ * @implements {org.apache.flex.core.IDataProviderItemRendererMapper}
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData =
+    function() {
+};
+
+
+/**
+ * @expose
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.prototype.itemRendererFactory = null;
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
+    prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'DataItemRendererFactoryForArrayData',
+                qName: 'org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData' }],
+      interfaces: [org.apache.flex.core.IDataProviderItemRendererMapper] };
+
+
+/**
+ * @private
+ * @type {Object}
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
+    prototype.itemRendererClass_ = null;
+
+
+/**
+ * @expose
+ * @param {Object} value The component strand.
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
+    prototype.set_strand = function(value) {
+  this.strand_ = value;
+
+  this.model = value.getBeadByType(
+      org.apache.flex.html.staticControls.beads.models.ArraySelectionModel);
+
+  this.listView = value.getBeadByType(
+      org.apache.flex.html.staticControls.beads.ListView);
+  this.dataGroup = this.listView.get_dataGroup();
+
+  this.model.addEventListener('dataProviderChanged',
+      goog.bind(this.dataProviderChangedHandler, this));
+
+  if (org.apache.flex.core.ValuesManager.valuesImpl.getValue && !this.itemRendererFactory_) {
+    /**
+     * @type {Function}
+     */
+    var c = /** @type {Function} */ (org.apache.flex.core.ValuesManager.valuesImpl.getValue(this.strand_,
+            'iItemRendererClassFactory'));
+    this.itemRendererFactory_ = new c();
+    this.strand_.addBead(this.itemRendererFactory_);
+  }
+
+  this.dataProviderChangedHandler(null);
+};
+
+
+/**
+ * @expose
+ * @return {Object} The itemRenderer.
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
+    prototype.get_itemRendererClass = function() {
+  if (org.apache.flex.core.ValuesManager.valuesImpl.getValue && !this.itemRendererClass_) {
+    var c = org.apache.flex.core.ValuesManager.valuesImpl.getValue(this.strand_, 'iItemRenderer');
+    if (c) {
+      this.itemRendererClass_ = c;
+    }
+  }
+  return this.itemRendererClass_;
+};
+
+
+/**
+ * @expose
+ * @param {Object} value class to use for the item renderer.
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
+    prototype.set_itemRendererClass = function(value) {
+  this.itemRendererClass_ = value;
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event that triggered the dataProvider change.
+ */
+org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
+    prototype.dataProviderChangedHandler = function(event) {
+  var dp, i, n, opt;
+
+  dp = this.model.get_dataProvider();
+  n = dp.length;
+  for (i = 0; i < n; i++) {
+    var ir = this.itemRendererFactory_.createItemRenderer(this.dataGroup);
+    ir.set_index(i);
+    ir.set_labelField(this.model.get_labelField());
+    ir.set_data(dp[i]);
+  }
+
+  var newEvent = new org.apache.flex.events.Event('itemsCreated');
+  this.strand_.dispatchEvent(newEvent);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/IListView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/IListView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/IListView.js
new file mode 100644
index 0000000..9f4cb33
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/IListView.js
@@ -0,0 +1,43 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.html.staticControls.beads.IListView');
+
+goog.require('org.apache.flex.core.IBeadView');
+
+
+
+/**
+ * IListView
+ *
+ * @interface
+ */
+org.apache.flex.html.staticControls.beads.IListView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.IListView.prototype.FLEXJS_CLASS_INFO =
+{ names: [{ name: 'IListView',
+            qName: 'org.apache.flex.html.staticControls.beads.IListView'}],
+  interfaces: [org.apache.flex.core.IBeadView] };

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageView.js
new file mode 100644
index 0000000..d63cf23
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageView.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.html.staticControls.beads.ImageView');
+
+
+goog.require('org.apache.flex.html.staticControls.beads.models.ImageModel');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.beads.ImageView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.ImageView
+  .prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ImageView',
+                qName: 'org.apache.flex.html.staticControls.beads.ImageView'}] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.beads.ImageView.prototype.set_strand =
+    function(value) {
+
+  this.strand_ = value;
+
+  this.model = value.getBeadByType(
+      org.apache.flex.html.staticControls.beads.models.ImageModel);
+  this.model.addEventListener('sourceChanged',
+      goog.bind(this.sourceChangeHandler, this));
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event triggered by the source change.
+ */
+org.apache.flex.html.staticControls.beads.ImageView.prototype.
+    sourceChangeHandler = function(event) {
+  this.strand_.element.src = this.model.get_source();
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ListView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ListView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ListView.js
new file mode 100644
index 0000000..862b94c
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ListView.js
@@ -0,0 +1,168 @@
+/**
+ * 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.staticControls.beads.ListView');
+
+goog.require('org.apache.flex.core.IBeadLayout');
+goog.require('org.apache.flex.core.IBeadView');
+goog.require('org.apache.flex.core.IItemRendererParent');
+goog.require('org.apache.flex.core.ILayoutParent');
+goog.require('org.apache.flex.core.ValuesManager');
+goog.require('org.apache.flex.html.staticControls.beads.IListView');
+goog.require('org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData');
+goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
+goog.require('org.apache.flex.html.staticControls.supportClasses.NonVirtualDataGroup');
+
+
+
+/**
+ * @constructor
+ * @implements {org.apache.flex.core.ILayoutParent}
+ * @implements {org.apache.flex.html.staticControls.beads.IListView}
+ */
+org.apache.flex.html.staticControls.beads.ListView = function() {
+  this.lastSelectedIndex = -1;
+
+  this.className = 'ListView';
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.
+    FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ListView',
+                qName: 'org.apache.flex.html.staticControls.beads.ListView' }],
+      interfaces: [org.apache.flex.html.staticControls.beads.IListView, org.apache.flex.core.ILayoutParent] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.set_strand =
+    function(value) {
+
+  this.strand_ = value;
+
+  this.strand_.addEventListener('widthChanged',
+      goog.bind(this.handleSizeChange, this));
+  this.strand_.addEventListener('heightChanged',
+      goog.bind(this.handleSizeChange, this));
+
+  /*if (this.strand_.getBeadByType(org.apache.flex.core.IBeadLayout) == null) {
+    var m = org.apache.flex.core.ValuesManager.valuesImpl.
+        getValue(this.strand_,'iBeadLayout');
+    var c = new m();
+    this.strand_.addBead(c);
+  }*/
+
+  this.model = this.strand_.get_model();
+  this.model.addEventListener('selectedIndexChanged',
+      goog.bind(this.selectionChangeHandler, this));
+
+  this.dataGroup_ = new
+      org.apache.flex.html.staticControls.supportClasses.NonVirtualDataGroup();
+  this.dataGroup_.set_strand(this);
+  this.strand_.addElement(this.dataGroup_);
+
+  this.handleSizeChange(null);
+};
+
+
+/**
+ * @expose
+ * @return {Object} The DataGroup instance.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.get_dataGroup =
+    function() {
+  return this.dataGroup_;
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The event that triggered the selection.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.
+    selectionChangeHandler = function(value) {
+  var ir;
+  if (this.lastSelectedIndex != -1) {
+    ir = this.dataGroup_.getItemRendererForIndex(this.lastSelectedIndex);
+    if (ir) ir.set_selected(false);
+  }
+  if (this.model.get_selectedIndex() != -1) {
+    ir = this.dataGroup_.getItemRendererForIndex(
+        this.model.get_selectedIndex());
+    if (ir) ir.set_selected(true);
+  }
+  this.lastSelectedIndex = this.model.get_selectedIndex();
+};
+
+
+/**
+ * @expose
+ * @return {Object} The view that contains the layout objects.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.get_contentView = function() {
+  return this;
+};
+
+
+/**
+ * @expose
+ * @return {Object} The border for the layout area.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.get_border = function() {
+  return null;
+};
+
+
+/**
+ * @expose
+ * @return {Object} The vertical scrollbar.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.get_vScrollBar = function() {
+  return null;
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The vertical scrollbar.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.set_vScrollBar = function(value) {
+};
+
+
+/**
+ * @expose
+ * @return {Object} The view that can be resized.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.get_resizeableView = function() {
+  return this;
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event that triggered the resize.
+ */
+org.apache.flex.html.staticControls.beads.ListView.prototype.handleSizeChange = function(event) {
+  this.dataGroup_.set_width(this.strand_.get_width());
+  this.dataGroup_.set_height(this.strand_.get_height());
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/PanelView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/PanelView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/PanelView.js
new file mode 100644
index 0000000..e19e6a0
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/PanelView.js
@@ -0,0 +1,72 @@
+/**
+ * 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.staticControls.beads.PanelView');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.beads.PanelView = function() {
+
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.PanelView
+  .prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'PanelView',
+                qName: 'org.apache.flex.html.staticControls.beads.PanelView'}] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.beads.PanelView.prototype.set_strand =
+    function(value) {
+
+  this.strand_ = value;
+
+  this.strand_.titleBar = new org.apache.flex.html.staticControls.TitleBar();
+  this.strand_.titleBar.addedToParent();
+  this.strand_.titleBar.element.id = 'titleBar';
+  this.strand_.addElement(this.strand_.titleBar);
+
+  this.strand_.controlBar =
+      new org.apache.flex.html.staticControls.ControlBar();
+  this.strand_.addElement(this.strand_.controlBar);
+
+  // listen for changes to the strand's model so items can be changed
+  // in the view
+  this.strand_.model.addEventListener('titleChange',
+      goog.bind(this.changeHandler, this));
+
+};
+
+
+/**
+ * @param {Object} event The event that triggered this handler.
+ */
+org.apache.flex.html.staticControls.beads.PanelView.prototype.changeHandler =
+    function(event) {
+  if (event.type == 'titleChange') {
+    this.strand_.titleBar.set_title(this.strand_.model.get_title());
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderThumbView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderThumbView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderThumbView.js
new file mode 100644
index 0000000..9afc551
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderThumbView.js
@@ -0,0 +1,61 @@
+/**
+ * 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.staticControls.beads.SliderThumbView');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.beads.SliderThumbView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.SliderThumbView
+  .prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'SliderThumbView',
+                qName: 'org.apache.flex.html.staticControls.beads.SliderThumbView'}] };
+
+
+/**
+ * @expose
+ * @param {Object} value The strand.
+ */
+org.apache.flex.html.staticControls.beads.SliderThumbView.prototype.
+    set_strand = function(value) {
+  this.strand_ = value;
+
+  this.element = document.createElement('div');
+  this.element.className = 'SliderThumb';
+  this.element.id = 'thumb';
+  this.element.style.backgroundColor = '#949494';
+  this.element.style.border = 'thin solid #747474';
+  this.element.style.position = 'relative';
+  this.element.style.height = '30px';
+  this.element.style.width = '10px';
+  this.element.style.zIndex = '2';
+  this.element.style.top = '-10px';
+  this.element.style.left = '20px';
+
+  this.strand_.element.appendChild(this.element);
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderTrackView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderTrackView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderTrackView.js
new file mode 100644
index 0000000..f1a4152
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/SliderTrackView.js
@@ -0,0 +1,61 @@
+/**
+ * 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.staticControls.beads.SliderTrackView');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.beads.SliderTrackView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.SliderTrackView
+  .prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'SliderTrackView',
+                qName: 'org.apache.flex.html.staticControls.beads.SliderTrackView'}] };
+
+
+/**
+ * @expose
+ * @param {Object} value The strand.
+ */
+org.apache.flex.html.staticControls.beads.SliderTrackView.prototype.
+    set_strand = function(value) {
+  this.strand_ = value;
+
+  this.element = document.createElement('div');
+  this.element.className = 'SliderTrack';
+  this.element.id = 'track';
+  this.element.style.backgroundColor = '#E4E4E4';
+  this.element.style.height = '10px';
+  this.element.style.width = '200px';
+  this.element.style.border = 'thin solid #C4C4C4';
+  this.element.style.position = 'relative';
+  this.element.style.left = '0px';
+  this.element.style.top = '10px';
+  this.element.style.zIndex = '1';
+
+  this.strand_.element.appendChild(this.element);
+
+  this.positioner = this.element;
+  this.element.flexjs_wrapper = this;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5759d50b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextItemRendererFactoryForArrayData.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextItemRendererFactoryForArrayData.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextItemRendererFactoryForArrayData.js
new file mode 100644
index 0000000..d340174
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextItemRendererFactoryForArrayData.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.html.staticControls.beads.TextItemRendererFactoryForArrayData');
+
+goog.require('org.apache.flex.core.IDataProviderItemRendererMapper');
+goog.require('org.apache.flex.core.IItemRenderer');
+goog.require('org.apache.flex.events.EventDispatcher');
+goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.events.EventDispatcher}
+ * @implements {org.apache.flex.core.IItemRenderer}
+ */
+org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData =
+    function() {
+  goog.base(this);
+};
+goog.inherits(
+    org.apache.flex.html.staticControls.
+        beads.TextItemRendererFactoryForArrayData,
+    org.apache.flex.events.EventDispatcher);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData.
+    prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TextItemRendererFactoryForArrayData',
+                qName: 'org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData' }],
+      interfaces: [org.apache.flex.core.IItemRenderer] };
+
+
+/**
+ * @expose
+ * @param {Object} value The component strand.
+ */
+org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData.
+    prototype.set_strand = function(value) {
+  this.strand_ = value;
+
+  this.model = value.getBeadByType(
+      org.apache.flex.html.staticControls.beads.models.ArraySelectionModel);
+
+  this.listView = value.getBeadByType(
+      org.apache.flex.html.staticControls.beads.ListView);
+  this.dataGroup = this.listView.get_dataGroup();
+
+  this.model.addEventListener('dataProviderChanged',
+      goog.bind(this.dataProviderChangedHandler, this));
+
+  this.dataProviderChangedHandler(null);
+};
+
+
+/**
+ * @expose
+ * @param {Object} event The event that triggered the dataProvider change.
+ */
+org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData.
+    prototype.dataProviderChangedHandler = function(event) {
+  var dp, i, n, opt;
+
+  dp = this.model.get_dataProvider();
+  n = dp.length;
+  for (i = 0; i < n; i++) {
+    opt = new
+        org.apache.flex.html.staticControls.supportClasses.StringItemRenderer();
+    this.dataGroup.addElement(opt);
+    opt.set_text(dp[i]);
+  }
+
+  var newEvent = new org.apache.flex.events.Event('itemsCreated');
+  this.strand_.dispatchEvent(newEvent);
+};