flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cd...@apache.org
Subject [11/17] git commit: [flex-asjs] [refs/heads/feature-autobuild/example-maven-dirs] - - Refactored the directory structure of the example projects to be maven-style
Date Thu, 27 Oct 2016 15:16:12 GMT
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductListItem.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductListItem.mxml b/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductListItem.mxml
new file mode 100755
index 0000000..edf3516
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductListItem.mxml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+
+-->
+<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009" 
+                    xmlns:js="library://ns.apache.org/flexjs/basic" 
+    className="listItem" 
+    height="{HEIGHT}" implements="org.apache.flex.core.IItemRenderer">
+    <!--automationName="{product.name}">-->
+
+    <fx:Metadata>
+       [Event(name="productQtyChange", type="samples.flexstore.ProductListEvent")]
+       [Event(name="removeProduct", type="samples.flexstore.ProductListEvent")]
+    </fx:Metadata>
+    
+    <fx:Script>
+    <![CDATA[
+    
+        import samples.flexstore.Product;
+        import samples.flexstore.ProductListEvent;
+        
+        private static var idCounter:int = 0;
+        public var uid:String = (idCounter++).toString();
+        
+        public static const HEIGHT:int = 30;
+        
+        [Bindable("__NoChangeEvent__")]
+        public function get product():Product
+        {
+            return _data as Product;
+        }
+        public function set product(value:Product):void
+        {
+            _data = value;
+        }
+        
+        private var _data:Object;
+        
+        public function get data():Object
+        {
+            return _data;
+        }
+        
+        public function set data(value:Object):void
+        {
+            _data = value;
+        }
+        
+        public function get listData():Object
+        {
+        	return null;
+        }
+        
+        public function set listData(value:Object):void
+        {
+        	// not used
+        }
+
+        private var _itemRendererParent:Object;
+        
+        public function get itemRendererParent():Object
+        {
+            return _itemRendererParent;
+        }
+        
+        public function set itemRendererParent(value:Object):void
+        {
+            _itemRendererParent = value;
+        }
+        
+        private function qtyChange():void
+    	{
+            product.qty = int(qty.text);
+            var event:ProductListEvent = new ProductListEvent(ProductListEvent.PRODUCT_QTY_CHANGE);
+            event.product = product;
+    		dispatchEvent(event);
+        }
+        
+        private function removeItem():void
+        {
+            var event:ProductListEvent = new ProductListEvent(ProductListEvent.REMOVE_PRODUCT);
+            event.product = product;
+    		dispatchEvent(event);
+        }
+        
+    ]]>
+    </fx:Script>
+    
+    <fx:Declarations>
+        <js:CurrencyFormatter currencySymbol="$" id="cf" fractionalDigits="2"/>
+    </fx:Declarations>
+    
+    <js:beads>
+        <js:ContainerDataBinding />
+    </js:beads>
+        
+    <js:ImageButton id="removeButton" source="assets/trashcan.png"
+        width="14" height="14" y="5"
+        click="removeItem()">
+        <js:beads>
+            <js:ToolTipBead toolTip="Remove from cart" />
+        </js:beads>
+    </js:ImageButton>
+    
+    <js:Image id="productImage" x="16" y="6" width="12" height="12" source="{product.image}"/>
+
+    <js:Label id="productName" x="30" width="100" y="4" text="{product.name}"/>
+
+    <js:Label id="productPrice" width="60" y="4"
+        text="{cf.format(product.price)}" style="textAlign:right;right:0"
+                                style.showQuantity="textAlign:right;right:25"/>
+        
+    <js:TextInput id="qty" width="25" y="3" text="{product.qty}" includeIn="showQuantity"
+                  style="textAlign:right;right:0;marginTop:0" change="qtyChange()" >
+        <js:beads>
+            <js:NumericOnlyTextInputBead maxChars="3" />
+        </js:beads>
+    </js:TextInput>
+    
+    <js:states>
+        <js:State name="compare" />
+        <js:State name="showQuantity" />
+    </js:states>
+    
+</js:Container>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductSupport.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductSupport.mxml b/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductSupport.mxml
new file mode 100755
index 0000000..5b2bd32
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/productsView/ProductSupport.mxml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+
+-->
+<js:HContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
+          xmlns:js="library://ns.apache.org/flexjs/basic" 
+		 >
+    <js:style>
+        <js:SimpleCSSStyles paddingLeft="4" paddingRight="8" paddingBottom="4" />
+    </js:style>
+    <js:beads>
+        <js:ContainerDataBinding />
+    </js:beads>
+
+    <fx:Script>
+	<![CDATA[
+
+        private function toggle():void
+		{
+			/*
+            if (vd.playing)
+			{
+                vd.stop();
+                list.visible = true;
+            }
+			else
+			{
+                list.visible = false;
+                vd.play();
+            }
+			*/
+        }
+
+	]]>
+    </fx:Script>
+
+    <fx:Declarations>
+        <js:Parallel id="hideList">
+            <js:children>
+                <fx:Array>
+                    <js:Resize target="{list}" widthTo="0"/>
+                    <!--<mx:Resize target="{vd}" widthTo="400" heightTo="314"/>-->
+                </fx:Array>
+            </js:children>
+        </js:Parallel>
+        
+        <js:Parallel id="showList">
+            <js:children>
+                <fx:Array>
+                    <js:Resize target="{list}" widthTo="130"/>
+                    <!--<mx:Resize target="{vd}" widthTo="270" heightTo="217"/>-->
+                </fx:Array>
+            </js:children>
+        </js:Parallel>        
+    </fx:Declarations>
+    <js:List id="list" width="130" height="100%" selectedIndex="0">
+        <js:dataProvider>
+            <fx:Array>
+                <fx:Object label="Install SIM Card"/>
+            </fx:Array>
+        </js:dataProvider>
+    </js:List>
+
+    <js:Container width="100%">
+
+		<!--<mx:VideoDisplay id="vd" width="270" height="217" source="assets/phone.flv"
+						 autoPlay="false" complete="list.visible=true"/>
+
+		<mx:Button label="{vd.playing ? 'Stop' : 'Play'}" click="toggle()" left="8" bottom="8" includeInLayout="false">
+		</mx:Button>
+		-->
+	</js:Container>
+
+
+</js:HContainer>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ButtonBarButtonSkin.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ButtonBarButtonSkin.as b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ButtonBarButtonSkin.as
new file mode 100755
index 0000000..0c36aad
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ButtonBarButtonSkin.as
@@ -0,0 +1,298 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package samples.flexstore
+{
+
+import flash.display.GradientType;
+import mx.containers.BoxDirection;
+import mx.controls.Button;
+import mx.controls.ButtonBar;
+import mx.skins.Border;
+import mx.skins.halo.*;
+import mx.styles.StyleManager;
+import mx.utils.ColorUtil;
+
+/**
+ *  Adapted from mx.skins.halo.ButtonBarButtonSkin.
+ *  This version of the ButtonBarButtonSkin is applied for the
+ *  selectedOver, selectedUp, and over states to use the 2nd two
+ *  values of the fillColors for the selected state of the
+ *  button.  The over state then uses a computed value from
+ *  the themeColor to show emphasis.  The border of the selected
+ *  button also uses a computed value from the themeColor, but
+ *  is partially transparent.
+ */
+public class ButtonBarButtonSkin extends Border
+{
+	//--------------------------------------------------------------------------
+	//
+	//  Class variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private static var cache:Object = {};
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Several colors used for drawing are calculated from the base colors
+	 *  of the component (themeColor, borderColor and fillColors).
+	 *  Since these calculations can be a bit expensive,
+	 *  we calculate once per color set and cache the results.
+	 */
+	private static function calcDerivedStyles(themeColor:uint,
+											  fillColor0:uint,
+											  fillColor1:uint):Object
+	{
+		var key:String = HaloColors.getCacheKey(themeColor,
+												fillColor0, fillColor1);
+
+		if (!cache[key])
+		{
+			var o:Object = cache[key] = {};
+
+			// Cross-component styles.
+			HaloColors.addHaloColors(o, themeColor, fillColor0, fillColor1);
+
+			// Button-specific styles.
+			o.innerEdgeColor1 = ColorUtil.adjustBrightness2(fillColor0, -10);
+			o.innerEdgeColor2 = ColorUtil.adjustBrightness2(fillColor1, -25);
+		}
+
+		return cache[key];
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Constructor.
+	 */
+	public function ButtonBarButtonSkin()
+	{
+		super();
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  measuredWidth
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function get measuredWidth():Number
+	{
+		return 50;
+	}
+
+	//----------------------------------
+	//  measuredHeight
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function get measuredHeight():Number
+	{
+		return 22;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override protected function updateDisplayList(w:Number, h:Number):void
+	{
+		super.updateDisplayList(w, h);
+
+		// User-defined styles.
+		var borderColor:uint = getStyle("borderColor");
+		var cornerRadius:Number = getStyle("cornerRadius");
+		var fillAlphas:Array = getStyle("fillAlphas");
+		var fillColors:Array = getStyle("fillColors");
+		styleManager.getColorNames(fillColors);
+		var highlightAlphas:Array = getStyle("highlightAlphas");
+		var themeColor:uint = getStyle("themeColor");
+
+		// Derivative styles.
+		var derStyles:Object = calcDerivedStyles(themeColor, fillColors[0],
+												 fillColors[1]);
+
+		var borderColorDrk1:Number =
+			ColorUtil.adjustBrightness2(borderColor, -50);
+
+		var themeColorDrk1:Number =
+			ColorUtil.adjustBrightness2(themeColor, -25);
+
+		var emph:Boolean = false;
+
+		if (parent is Button)
+			emph = (parent as Button).emphasized;
+
+		var tmp:Number;
+
+		var bar:ButtonBar = parent ? ButtonBar(parent.parent) : null;
+		var horizontal:Boolean = true;
+		var pos:int = 0;
+
+		if (bar)
+		{
+			if (bar.direction == BoxDirection.VERTICAL)
+				horizontal = false;
+
+			// first: -1, middle: 0, last: 1
+			var index:int = bar.getChildIndex(parent);
+			pos = (index == 0 ? -1 : (index == bar.numChildren - 1 ? 1 : 0));
+		}
+
+		var radius:Object = getCornerRadius(pos, horizontal, cornerRadius);
+		var cr:Object = getCornerRadius(pos, horizontal, cornerRadius);
+		var cr1:Object = getCornerRadius(pos, horizontal, cornerRadius - 1);
+		var cr2:Object = getCornerRadius(pos, horizontal, cornerRadius - 2);
+		var cr3:Object = getCornerRadius(pos, horizontal, cornerRadius - 3);
+
+		graphics.clear();
+
+		switch (name)
+		{
+			case "selectedUpSkin":
+			case "selectedOverSkin":
+			{
+				var overFillColors:Array;
+				if (fillColors.length > 2)
+					overFillColors = [ fillColors[2], fillColors[3] ];
+				else
+					overFillColors = [ fillColors[0], fillColors[1] ];
+
+				var overFillAlphas:Array;
+				if (fillAlphas.length > 2)
+					overFillAlphas = [ fillAlphas[2], fillAlphas[3] ];
+  				else
+					overFillAlphas = [ fillAlphas[0], fillAlphas[1] ];
+
+				// button border/edge
+				drawRoundRect(
+					0, 0, w, h, cr,
+					[ themeColor, derStyles.themeColDrk1 ], 0.5,
+					verticalGradientMatrix(0, 0, w , h),
+					GradientType.LINEAR, null,
+					{ x: 1, y: 1, w: w - 2, h: h - 2, r: cr1 });
+
+				// button fill
+				drawRoundRect(
+					1, 1, w - 2, h - 2, cr1,
+					overFillColors, overFillAlphas,
+					verticalGradientMatrix(0, 0, w - 2, h - 2));
+
+				// top highlight
+				if (!(radius is Number))
+					{ radius.bl = radius.br = 0;}
+				drawRoundRect(
+					1, 1, w - 2, (h - 2) / 2, radius,
+					[ 0xFFFFFF, 0xFFFFFF ], highlightAlphas,
+					verticalGradientMatrix(1, 1, w - 2, (h - 2) / 2));
+				break;
+			}
+
+			case "overSkin":
+			{
+				// button border/edge
+				drawRoundRect(
+					0, 0, w, h, cr,
+					[ themeColor, derStyles.themeColDrk1 ], 0.5,
+					verticalGradientMatrix(0, 0, w, h));
+
+				// button fill
+				drawRoundRect(
+					1, 1, w - 2, h - 2, cr1,
+					[ derStyles.fillColorPress1, derStyles.fillColorPress2 ], 1,
+					verticalGradientMatrix(0, 0, w - 2, h - 2));
+
+				// top highlight
+				if (!(radius is Number))
+					{ radius.bl = radius.br = 0;}
+				drawRoundRect(
+					1, 1, w - 2, (h - 2) / 2, radius,
+					[ 0xFFFFFF, 0xFFFFFF ], highlightAlphas,
+					verticalGradientMatrix(1, 1, w - 2, (h - 2) / 2));
+
+				break;
+			}
+		}
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private function getCornerRadius(pos:int, horizontal:Boolean,
+									 radius:Number):Object
+	{
+		if (pos == 0)
+			return 0;
+
+		radius = Math.max(0, radius);
+
+		if (horizontal)
+		{
+			if (pos == -1)
+				return { tl: radius, tr: 0, bl: radius, br: 0 };
+			else // pos == 1
+				return { tl: 0, tr: radius, bl: 0, br: radius };
+		}
+		else
+		{
+			if (pos == -1)
+				return { tl: radius, tr: radius, bl: 0, br: 0 };
+			else // pos == 1
+				return { tl: 0, tr: 0, bl: radius, br: radius };
+		}
+	}
+}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/Product.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/Product.as b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/Product.as
new file mode 100755
index 0000000..707fbf6
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/Product.as
@@ -0,0 +1,78 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package samples.flexstore
+{
+
+[Bindable]
+public class Product
+{
+
+    public var productId:int;
+    public var name:String;
+    public var description:String;
+    public var price:Number;
+    public var image:String;
+    public var experience:String;
+    public var blazeds:Boolean;
+    public var mobile:Boolean;
+    public var video:Boolean;
+    public var highlight1:String;
+    public var highlight2:String;
+    public var qty:int;
+
+    public function Product()
+    {
+
+    }
+
+    public function fill(obj:Object):void
+    {
+        for (var i:String in obj)
+        {
+            this[i] = obj[i];
+        }
+    }
+
+    [Bindable(event="propertyChange")]
+    public function get featureString():String
+    {
+    	var str:String = "";
+    	if (blazeds)
+    		str += "BlazeDS";
+
+		if (mobile)
+		{
+			if (str.length > 0)
+				str += "\n";
+			str += "Mobile";
+		}
+
+		if (video)
+		{
+			if (str.length > 0)
+				str += "\n";
+			str += "Video";
+		}
+
+		return str;
+    }
+
+}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilter.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilter.as b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilter.as
new file mode 100755
index 0000000..b31f367
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilter.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package samples.flexstore
+{
+
+[Bindable]
+public class ProductFilter
+{
+    public var count:int;
+    public var experience:String;
+    public var minPrice:Number;
+    public var maxPrice:Number;
+    public var blazeds:Boolean;
+    public var mobile:Boolean;
+    public var video:Boolean;
+    
+    public function ProductFilter()
+    {
+        super();
+    }
+    
+    public function accept(product:Product):Boolean
+    {
+        //price is often the first test so let's fail fast if possible
+        if (minPrice > product.price || maxPrice < product.price)
+            return false;
+        if (experience != "All" && experience > product.experience)
+            return false;
+        if (blazeds && !product.blazeds)
+            return false;
+        if (mobile && !product.mobile)
+            return false;
+        if (video && !product.video)
+            return false;
+        
+        return true;
+    }
+}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilterEvent.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilterEvent.as b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilterEvent.as
new file mode 100755
index 0000000..0160f50
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductFilterEvent.as
@@ -0,0 +1,39 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package samples.flexstore
+{
+
+import org.apache.flex.events.Event;
+
+public class ProductFilterEvent extends Event
+{
+    public static const FILTER:String = "filter";
+    
+    public var live:Boolean;
+    public var filter:ProductFilter;
+    
+    public function ProductFilterEvent(filter:ProductFilter, live:Boolean)
+    {
+        super(FILTER);
+        this.filter = filter;
+        this.live = live;
+    }
+}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductListEvent.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductListEvent.as b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductListEvent.as
new file mode 100755
index 0000000..0356795
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductListEvent.as
@@ -0,0 +1,42 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package samples.flexstore
+{
+
+import org.apache.flex.events.Event;
+
+public class ProductListEvent extends Event
+{
+    public static const ADD_PRODUCT:String = "addProduct";
+    public static const DUPLICATE_PRODUCT:String = "duplicateProduct";
+    public static const REMOVE_PRODUCT:String = "removeProduct";
+    public static const PRODUCT_QTY_CHANGE:String = "productQtyChange";
+    
+    public var product:Product;
+    
+    //making the default bubbles behavior of the event to true since we want
+    //it to bubble out of the ProductListItem and beyond
+    public function ProductListEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false)
+    {
+        super(type, bubbles, cancelable);
+    }
+    
+}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductThumbEvent.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductThumbEvent.as b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductThumbEvent.as
new file mode 100755
index 0000000..ce1cab7
--- /dev/null
+++ b/examples/flexjs/FlexJSStore/src/main/flex/samples/flexstore/ProductThumbEvent.as
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package samples.flexstore
+{
+    
+import org.apache.flex.events.Event;
+
+public class ProductThumbEvent extends Event
+{
+    public static const PURCHASE:String = "purchase";
+    public static const COMPARE:String = "compare";
+    public static const DETAILS:String = "details";
+    public static const BROWSE:String = "browse";
+    
+    public var product:Product;
+    
+    public function ProductThumbEvent(type:String, product:Product)
+    {
+        super(type);
+        this.product = product;
+    }
+    
+    override public function cloneEvent():Event
+    {
+        return new ProductThumbEvent(type, product);
+    }
+}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/CatalogTitleButtons.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/CatalogTitleButtons.mxml b/examples/flexjs/FlexJSStore/src/productsView/CatalogTitleButtons.mxml
deleted file mode 100755
index af9cfd1..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/CatalogTitleButtons.mxml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:HContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
-                  xmlns:js="library://ns.apache.org/flexjs/basic" 
-                  currentState="showFilter">
-    <js:style>
-        <js:SimpleCSSStyles verticalAlign="middle" 
-                               paddingTop="0" 
-                               paddingBottom="0" />
-    </js:style>
-    <js:beads>
-        <js:ParentDocumentBead id="pdb" />
-        <js:ContainerDataBinding />
-        <js:LayoutChangeNotifier watchedProperty="{viewCart.text}" initialValue="#FFFFFF" />
-    </js:beads>
-    <fx:Script>
-        <![CDATA[
-            [Bindable]
-            public var cartCount:int;
-            
-            private function rollOverLabel(event:MouseEvent):void
-            {
-                try {
-                    Label(event.target).className = "catalogTitleButtonHighlighted";
-                } catch (e:Error) {}
-            }
-            
-            private function rollOutLabel(event:MouseEvent):void
-            {
-                Label(event.target).className = "catalogTitleButtonDeselected";
-            }
-        ]]>
-    </fx:Script>
-    <fx:Binding source="ProductCatalogPanel(pdb.parentDocument).cartCount" destination="cartCount" />
-    <!-- two-way binding between the states of panel title buttons and the product view state -->
-    <fx:Binding source="ProductsView(ProductCatalogPanel(pdb.parentDocument).pdb.parentDocument).currentState" destination="currentState" />
-    <fx:Binding destination="ProductsView(ProductCatalogPanel(pdb.parentDocument).pdb.parentDocument).currentState" source="currentState" />    
-
-    <js:Label id="findPhones" text="Find Developers" click="currentState = 'showFilter'"
-             className.showFilter="catalogTitleButtonSelected"
-             className.showCart="catalogTitleButtonDeselected"
-             rollOver.showCart="rollOverLabel(event)"
-             rollOut.showCart="rollOutLabel(event)"/>
-    <js:VRule height="{findPhones.height * .75}" alpha=".75" style="color:#333333" />
-    <js:Label id="viewCart" text="View Cart ({cartCount} items)" click="currentState = 'showCart'"
-             className.showFilter="catalogTitleButtonDeselected"
-             className.showCart="catalogTitleButtonSelected"
-             rollOver.showFilter="rollOverLabel(event)"
-             rollOut.showFilter="rollOutLabel(event)"/>
-    
-    <js:states>
-        <js:State name="showFilter" />
-        <js:State name="showCart" />
-    </js:states>
-</js:HContainer>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/Grip.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/Grip.mxml b/examples/flexjs/FlexJSStore/src/productsView/Grip.mxml
deleted file mode 100755
index 281c572..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/Grip.mxml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009"
-                  xmlns:js="library://ns.apache.org/flexjs/basic" 
-                  width="17" height="100%" >
-    <js:style>
-        <js:SimpleCSSStyles paddingTop="10" />
-    </js:style>
-
-    <fx:Script>
-        <![CDATA[
-           [Bindable]
-           public var gripTip:String; 
-           
-           [Bindable]
-           public var gripIcon:String;
-        ]]>
-    </fx:Script>
-    <js:beads>
-        <js:ContainerDataBinding />
-        <js:OneFlexibleChildVerticalLayout flexibleChild="grip" />
-    </js:beads>
-
-    <js:Image id="icon" source="{gripIcon}" />
-    <js:Image id="grip" source="assets/grip.png" >
-        <js:beads>
-            <js:ToolTipBead toolTip="{gripTip}" />
-        </js:beads>
-    </js:Image>
-    
-</js:Container>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/ProductCart.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/ProductCart.mxml b/examples/flexjs/FlexJSStore/src/productsView/ProductCart.mxml
deleted file mode 100755
index 830bf21..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/ProductCart.mxml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009"
-          xmlns:js="library://ns.apache.org/flexjs/basic" 
-    xmlns:productsView="productsView.*"
-    >
-    <js:style>
-        <js:SimpleCSSStyles 
-                               paddingTop="8"
-                               paddingBottom="8"
-                               paddingRight="4"
-                               paddingLeft="4" />
-    </js:style>
-    <js:beads>
-        <js:ContainerDataBinding />
-        <js:OneFlexibleChildVerticalLayout id="flexLayout" flexibleChild="productList" />
-    </js:beads>
-    <fx:Script>
-        <![CDATA[
-        
-        import org.apache.flex.html.SimpleAlert;
-        
-        import samples.flexstore.Product;
-        import samples.flexstore.ProductListEvent;
-        
-        [Bindable]
-        public var numProducts:int=0;
-        
-        [Bindable]
-        private var total:Number = 0;
-
-        private const SHIPPING:Number = 1.99;
-        
-        private function productListEventHandler(event:ProductListEvent):void
-        {
-            switch (event.type)
-            {
-                case ProductListEvent.ADD_PRODUCT:
-                    event.product.qty = 0;  
-                    //fall through into the same logic as dup          
-                case ProductListEvent.DUPLICATE_PRODUCT:
-                    event.product.qty++;
-                    //total += event.product.price;
-                    total = total + event.product.price;
-                    numProducts++;
-                    break;            
-                case ProductListEvent.PRODUCT_QTY_CHANGE:
-                case ProductListEvent.REMOVE_PRODUCT:
-                    var items:Array = productList.items;
-                    total = 0; 
-                    numProducts = 0;
-                    for (var i:int=0; i < items.length; i++)
-                    {
-                        var product:Product = items[i].product;
-                        //total += product.qty * product.price;
-                        //numProducts += product.qty;
-                        total = total + product.qty * product.price;
-                        numProducts = numProducts + product.qty;
-                    }       
-                    break;
-                default:
-                    break;
-            }
-        }
-        
-        ]]>
-    </fx:Script>
-    <fx:Declarations>
-        <js:CurrencyFormatter currencySymbol="$" id="cf" fractionalDigits="2"/>        
-    </fx:Declarations>
-    
-    <js:Label width="100%" text="Your Shopping Cart" className="sectionHeader"/>
-        
-    <productsView:ProductList id="productList" width="100%"
-        newItemStartX="-100" newItemStartY="-100" 
-        addProduct="productListEventHandler(event)"
-        duplicateProduct="productListEventHandler(event)"
-        productQtyChange="productListEventHandler(event)"
-        removeProduct="productListEventHandler(event)"
-        showQuantity="true" />
-    
-    <js:Container style="right:0" id="totalContainer">
-        <js:beads>
-            <js:VerticalColumnLayout numColumns="2" />
-        </js:beads>
-        <js:Label text="Total:" />
-        <js:Label width="70" text="{cf.format(total)}" id="lblTotal" style="textAlign:'right'"/>
-
-        <js:Label text="Service Fee:" />
-        <js:Label width="70" text="{cf.format(numProducts * SHIPPING)}" id="lblFee" style="textAlign:'right'"/>
-
-        <js:Label text="Grand Total:" style="fontWeight:'bold'" />
-        <js:Label width="70" text="{cf.format(total + (numProducts * SHIPPING))}" id="lblGrandTotal" style="textAlign:'right'"/>
-
-    </js:Container>
-
-    <js:TextButton text="Submit Order" click="SimpleAlert.show('This feature is not implemented in this sample', 'Submit Order')"
-                   style="right:0"/>
-
-</js:Container>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanel.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanel.mxml b/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanel.mxml
deleted file mode 100755
index 48fa69a..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanel.mxml
+++ /dev/null
@@ -1,546 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:Panel xmlns:fx="http://ns.adobe.com/mxml/2009"
-         xmlns:js="library://ns.apache.org/flexjs/basic" 
-         implements="org.apache.flex.core.IDragInitiator"
-    xmlns:productsView="productsView.*"
-    currentState="browse"
-    title="SpaceHolder"
-    title.browse="Browse"
-    title.compare="Product Comparison"
-    title.details="Product Details"
-    className="catalogPanel"
-    >
-    
-    <fx:Metadata>
-        [Event(name="purchase", type="samples.flexstore.ProductThumbEvent")]
-        [Event(name="compare", type="samples.flexstore.ProductThumbEvent")]
-        [Event(name="details", type="samples.flexstore.ProductThumbEvent")]
-    </fx:Metadata>
-    
-    <fx:Script>
-        <![CDATA[
-            import org.apache.flex.core.IUIBase;
-            import org.apache.flex.effects.Effect;
-            import org.apache.flex.effects.Fade;
-            import org.apache.flex.effects.Move;
-            import org.apache.flex.effects.Parallel;
-            import org.apache.flex.effects.Tween;
-            import org.apache.flex.events.DragEvent;
-            import org.apache.flex.events.Event;
-            import org.apache.flex.collections.LazyCollection;
-            
-            import samples.flexstore.Product;
-            import samples.flexstore.ProductFilter;
-            import samples.flexstore.ProductFilterEvent;
-            import samples.flexstore.ProductThumbEvent;
-       
-     
-        private var accepted:Object = new Object();
-        private var thumbnails:Array;
-        private var filterCount:int;
-        private var thumbnailState:String = 'browse'; //either 'browse' or 'compare'
-                
-        [Bindable]
-        public var cartCount:int;
-        
-        //-----------------------------
-        // catalog
-        //-----------------------------
-        
-        private var _catalog:LazyCollection;
-        
-        [Bindable]
-        public function set catalog(c:LazyCollection):void
-        {
-            _catalog = c;
-            createThumbnails();
-        }
-        
-        public function get catalog():LazyCollection
-        {
-            return _catalog;
-        }
-        
-        //----------------------------------------------------------------------
-        // methods
-        //----------------------------------------------------------------------
-       
-        private function createThumbnails():void
-        {
-            var i:int; //variables are hoisted up in scope so declare here to avoid warning
-            if (thumbnails != null)
-            {
-                for (i=0; i < thumbnails.length; i++)
-                {
-                    thumbContentGroup.removeElement(thumbnails[i]);
-                }
-            }
-            
-            var row:int = 0;
-            var col:int = -1;
-            var n:int = catalog.length;
-            thumbnails = new Array(n);
-            filterCount = n;
-            
-            for (i=0; i < n; i++)
-            {
-                var thumb:ProductCatalogThumbnail = new ProductCatalogThumbnail();
-                thumb.x = 0;
-                thumb.y = 0;
-                thumbnails[i] = thumb;
-                // thumbnails[i].showInAutomationHierarchy = true;
-                thumb.product = catalog.getItemAt(i) as Product;
-                accepted[thumb.product.productId.toString()] = true;
-                thumbContentGroup.addElement(thumb);
-                thumb.addEventListener(ProductThumbEvent.PURCHASE, productThumbEventHandler);
-                thumb.addEventListener(ProductThumbEvent.COMPARE, productThumbEventHandler);
-                thumb.addEventListener(ProductThumbEvent.DETAILS, productThumbEventHandler);
-                thumb.addEventListener(DragEvent.DRAG_START,thumbDragStartHandler);
-            }
-
-            var lastMove:Effect = layoutCatalog();
-            if (lastMove)
-            {
-                lastMove.addEventListener(Tween.TWEEN_UPDATE, updateLayout);
-                lastMove.addEventListener(Tween.TWEEN_END, updateLayout);
-            }
-        }
-        
-        private function updateLayout(event:org.apache.flex.events.Event):void
-        {
-            thumbContentGroup.dispatchEvent(new org.apache.flex.events.Event("layoutNeeded"));   
-        }
-            
-        private function thumbDragStartHandler(event:MouseEvent):void
-        {
-            if (DragMouseController.dragging == false)
-            {
-                var thumb:ProductCatalogThumbnail = event.target as ProductCatalogThumbnail;
-                DragEvent.dragSource = thumb.product;
-
-                var di:ProductCatalogThumbnail = new ProductCatalogThumbnail();
-                di.product = thumb.product;
-                di.currentState = thumb.currentState;
-                DragMouseController.dragImage = di;
-                
-                DragEvent.dragInitiator = this;
-            }    
-        }
-        
-        public function filter(productFilter:ProductFilter, live:Boolean):void
-        {
-            currentState = "browse";
-            thumbnailState = "browse";
-            var count:int=0;
-            var n:int = thumbnails.length;
-            var targets:Array = [];
-            for (var i:int = 0; i < n; i++)
-            {
-                var thumb:ProductCatalogThumbnail = thumbnails[i];
-                var product:Product = thumb.product;
-                if (productFilter.accept(product))
-                {
-                    accepted[product.productId.toString()] = true;
-                    thumb.alpha = 1;    
-                    count++;
-                }
-                else
-                {
-                    accepted[product.productId.toString()] = false;
-                    if (live)
-                    {
-                        thumb.alpha = .1;
-                    }
-                    else if (thumb.alpha == 1) //only fade if we hadn't started
-                    {
-                        targets.push(thumb);
-                    }
-                }
-            }
-            productFilter.count = count;
-            filterCount = count;
-
-            if (targets.length > 0)    
-            {
-                var p:Parallel = new Parallel();
-                n = targets.length;
-                for (i = 0; i < n; i++)
-                {
-                    var fadeOut:Fade = new Fade(targets[i] as IUIBase);
-                    fadeOut.alphaFrom = 1;
-                    fadeOut.alphaTo = .1;
-                    p.addChild(fadeOut);
-                }
-                p.play();
-                p.addEventListener(Effect.EFFECT_END,
-                    function(event:org.apache.flex.events.Event):void
-                    {
-                        layoutCatalog();
-                    });
-            }
-            else if (!live)
-            {
-                layoutCatalog();
-            }
-        }
-        
-        private function layoutCatalog():Effect
-        {
-            var tileWidth:Number;
-            var tileHeight:Number;
-            var numCols:int;
-
-            if (filterCount > 9 || currentState == "compare")
-            {
-                numCols = 4;
-                tileWidth = ProductCatalogThumbnail.COL_WIDTH_4;
-                tileWidth = currentState == "compare"
-                    ? ProductCatalogThumbnail.COMPARE_WIDTH
-                    : ProductCatalogThumbnail.COL_WIDTH_4
-                tileHeight = currentState == "compare"
-                    ? height - 4
-                    : ProductCatalogThumbnail.COL_HEIGHT_4;
-            }
-            else if (filterCount > 4)
-			{
-                numCols = 3;
-                tileWidth = ProductCatalogThumbnail.COL_WIDTH_3;
-                tileHeight = ProductCatalogThumbnail.COL_HEIGHT_3;
-            }
-			else if (filterCount <= 9)
-			{
-                numCols = 2;
-                tileWidth = ProductCatalogThumbnail.COL_WIDTH_2;
-                tileHeight = ProductCatalogThumbnail.COL_HEIGHT_2;
-            }
-			else
-			{
-            }
-            
-            var row:int = 0;
-            var col:int = -1;
-
-			var move:Move = null;
-
-            var n:int = catalog.length;
-			for (var i:int = 0 ; i < n ; i++)
-			{
-                var product:Product = catalog.getItemAt(i) as Product;
-                var thumb:ProductCatalogThumbnail = thumbnails[i];
-                if (accepted[product.productId.toString()])
-                {
-                    thumb.currentState = "x" + numCols + "cols";
-                    col++;
-                    if (col > numCols - 1)
-					{
-                        row++;
-                        col = 0;
-                    }
-
-                    var xTo:Number = col * (tileWidth + ProductCatalogThumbnail.HORIZONTAL_GAP);
-                    var yTo:Number = row * (tileHeight + ProductCatalogThumbnail.VERTICAL_GAP);
-
-                    // If the thumbnail is already visible
-					// animate it to its new position.
-                    if (thumb.visible)
-					{
-                        // Animate only if the position is different
-						// from its current position.
-                        if (thumb.x != xTo || thumb.y != yTo)
-						{
-                            move = new Move(thumb);
-                            move.xTo = xTo;
-                            move.yTo = yTo;
-                            move.play();
-                        }
-                    }
-
-                    // If the thumbnail was not previously visible, sets its
-					// x and y coordinates. We'll make it reappear after all
-                    // the visible thumbnails have reached their new position.
-					else
-					{
-                        thumb.x = xTo;
-                        thumb.y = yTo;
-//                        thumb.includeInLayout = true;
-                    }
-                }
-				else
-				{
-                    thumb.visible = false;
-//                    thumb.includeInLayout = false;
-                }
-            }
-
-            if (!move)
-			{
-                // No visible thumbnails were animated to a new position;
-				// fade in newly selected thumbnails right away.
-                fadeInThumbnails();
-            }
-			else
-			{
-			    //since movement is happening get the scrollbar back to the top
-				scv.verticalScrollPosition = 0;
-                // Fade in newly selected thumbnails after the last
-				// visible thumbnail has moved to its new position.
-                move.addEventListener(Effect.EFFECT_END,
-					function(event:org.apache.flex.events.Event):void
-					{
-						fadeInThumbnails();
-					});
-            }
-            thumbContentGroup.dispatchEvent(new org.apache.flex.events.Event("layoutNeeded"));
-            //return the last move to watch
-            return move;
-        }
-        
-        //return the last effect so we could add effectEnd handler if desired
-        private function fadeInThumbnails():void
-		{
-			var n:int = thumbnails.length;
-			var targets:Array = [];
-			for (var i:int = 0; i < n ; i++)
-			{
-			    var thumb:ProductCatalogThumbnail = thumbnails[i];
-			    if (accepted[thumb.product.productId.toString()] && !thumb.visible)
-				{
-                    thumb.alpha = 0;
-                    thumb.visible = true;
-                    targets.push(thumb);
-                }
-            }
-            if (targets.length > 0)
-            {
-                n = targets.length;
-                for (i = 0; i < n; i++)
-                {
-                    var effect:Fade = new Fade(targets[i] as IUIBase);
-                    effect.alphaTo = 1;
-                    effect.play();
-                }
-            }
-        }
-        
-        private function showDetails(product:Product):void
-        {
-            if (currentState == "details")
-			{
-                details.product = product;
-                return;
-            }
-
-            var row:int = -1;
-
-            //should be computed using border metrics instead of hard-coding the 20, but...
-			var xTo:Number = thumbContentGroup.width - ProductCatalogThumbnail.COL_WIDTH_4 - 20;
-            var yTo:Number;
-
-            var move:Move;
-            var first:Boolean = true;
-            var selectedThumb:ProductCatalogThumbnail;
-
-            var n:int = thumbnails.length;
-			for (var i:int = 0; i < n; i++)
-			{
-			    var thumb:ProductCatalogThumbnail = thumbnails[i];
-                if (thumb.visible)
-				{
-                    row++;
-                    yTo = row * (ProductCatalogThumbnail.COL_HEIGHT_4 + ProductCatalogThumbnail.VERTICAL_GAP);
-
-                    thumb.currentState = "x4cols";
-
-                    if (thumb.x != xTo || thumb.y != yTo)
-					{
-                        move = new Move(thumb);
-                        if (first)
-						{
-                            move.addEventListener(Effect.EFFECT_END,
-								function(event:org.apache.flex.events.Event):void
-								{
-									details.product = product;
-                                    currentState = "details";
-								});
-
-                            first = false;
-                        }
-                        move.xTo = xTo;
-                        move.yTo = yTo;
-                        move.play();
-                    }
-                    
-                    if (thumb.product == product)
-                    {
-                        selectedThumb = thumb;
-                    }
-                }
-            }
-            if (selectedThumb != null)
-            {
-                //make sure that the selected thumb is visible in the list on the right
-                move.addEventListener(Effect.EFFECT_END,
-					function(e:org.apache.flex.events.Event):void
-					{
-					    var curpos:int = scv.verticalScrollPosition;
-					    if (selectedThumb.y < curpos)
-					    {
-					        scv.verticalScrollPosition = y;
-					    }
-					    else if (selectedThumb.y + ProductCatalogThumbnail.COL_HEIGHT_4 > curpos + thumbContentGroup.height)
-					    {
-					        //this logic doesn't seem to be perfect but it will do
-					        var diff:int = selectedThumb.y - (curpos + thumbContentGroup.height)
-					        scv.verticalScrollPosition += diff + ProductCatalogThumbnail.COL_HEIGHT_4 + ProductCatalogThumbnail.VERTICAL_GAP;
-					    }
-					});
-            }
-            
-        }
-        
-        private function productThumbEventHandler(event:ProductThumbEvent):void
-        {
-            if (event.type == ProductThumbEvent.DETAILS)
-            {
-                showDetails(event.product);
-            }
-            else if (event.type == ProductThumbEvent.BROWSE)
-            {
-                if (thumbnailState == "browse")
-                {                
-                    currentState = "browse";
-                    layoutCatalog();
-                }
-                else
-                {
-                    compare();
-                }
-            }
-            else
-            {
-                dispatchEvent(event);
-            }
-        }
-        
-        public function compare(toCompare:Array=null):void
-        {
-            currentState = "compare";
-            thumbnailState = "compare";
-            if (toCompare != null)
-            {
-                var n:int = thumbnails.length;
-                for (var i:int = 0; i < n; i++)
-                {
-                    accepted[thumbnails[i].product.productId.toString()] = false;
-                }
-                for (i=0; i < toCompare.length; i++)
-                {
-                    accepted[toCompare[i].productId.toString()] = true;
-                }
-            }
-            var lastEffect:Effect = layoutCatalog();
-            if (lastEffect != null)
-            {
-                lastEffect.addEventListener(Effect.EFFECT_END,
-                    function (event:org.apache.flex.events.Event):void
-                    {
-                        setCompareState();
-                    });
-            }
-            else
-            {
-                setCompareState();
-            }
-        }
-        
-        private function setCompareState():void
-        {
-            //avoid an issue if the user clicks quickly where we move into
-            //compare state even though we're no longer in compare
-            if (currentState == "compare") 
-            {
-                var n:int = thumbnails.length;
-                for (var i:int = 0; i < n; i++)
-                {
-                    var thumb:ProductCatalogThumbnail = thumbnails[i];
-                    if (accepted[thumb.product.productId.toString()])
-                    {
-                        thumb.currentState = "compare";
-                    }
-                }
-                
-            }
-        }
-        
-        public function acceptingDrop(dropTarget:Object, type:String):void
-        {
-            
-        }
-            
-        public function acceptedDrop(dropTarget:Object, type:String):void
-        {
-            
-        }
-
-        ]]>
-    </fx:Script>
-    
-    <js:beads>
-        <js:ContainerDataBinding />
-        <js:VerticalLayout />
-        <js:DragMouseController id="dragger" />
-        <js:ParentDocumentBead id="pdb" />
-        <js:PanelView>
-            <js:titleBar>
-                <js:TitleBar height="20" >
-                    <js:style>
-                        <js:SimpleCSSStyles backgroundColor="0xA65904" />
-                    </js:style>
-                    <js:beads>
-                        <productsView:ProductCatalogPanelTitleBarView />
-                    </js:beads>
-                </js:TitleBar>
-            </js:titleBar>
-        </js:PanelView>
-    </js:beads>
-    <js:Container width="100%" height="100%">
-        <js:Container id="thumbContentGroup" width="100%" height="100%">
-            <js:beads>
-				<js:ScrollingViewport id="scv" />
-            </js:beads>
-        </js:Container>
-        <productsView:ProductDetails id="details" y="0"
-            width="{ProductCatalogThumbnail.COL_WIDTH_4 * 3}"
-            height="100%"
-            visible="false"
-            visible.details="true"
-            compare="productThumbEventHandler(event)"
-            purchase="productThumbEventHandler(event)"
-            browse="productThumbEventHandler(event)" />
-    </js:Container>
-    
-    <js:states>
-        <js:State name="browse" />
-        <js:State name="compare" />
-        <js:State name="details" />
-    </js:states>
-    
-</js:Panel>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanelTitleBarView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanelTitleBarView.mxml b/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanelTitleBarView.mxml
deleted file mode 100755
index f2cb397..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogPanelTitleBarView.mxml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:MXMLBeadView xmlns:fx="http://ns.adobe.com/mxml/2009"
-                        xmlns:js="library://ns.apache.org/flexjs/basic" 
-                        xmlns:productsView="productsView.*"
-                        >
-    <fx:Script>
-        <![CDATA[
-            import org.apache.flex.html.TitleBar;
-            import org.apache.flex.core.ITitleBarModel;
-            import org.apache.flex.core.UIBase;
-            import org.apache.flex.events.Event;
-            
-            private function clickHandler():void
-            {
-                var newEvent:org.apache.flex.events.Event = new org.apache.flex.events.Event('close',true);
-                UIBase(_strand).dispatchEvent(newEvent)   
-            }
-        ]]>
-    </fx:Script>
-    <js:beads>
-        <js:MXMLBeadViewDataBinding />
-        <js:ParentDocumentBead id="pdb" />
-        <js:LayoutChangeNotifier watchedProperty="{buttons.width}" />
-    </js:beads>
-    <js:Label id="titleLabel" text="{ITitleBarModel(model).title}" 
-                 />
-    <js:CloseButton id="closeButton" click="clickHandler()"
-                       visible="{ITitleBarModel(model).showCloseButton}";
-                       />
-    <productsView:CatalogTitleButtons id="buttons" />
-</js:MXMLBeadView>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogThumbnail.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogThumbnail.mxml b/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogThumbnail.mxml
deleted file mode 100755
index 7b415da..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/ProductCatalogThumbnail.mxml
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009"
-                   xmlns:js="library://ns.apache.org/flexjs/basic" 
-    width="{COL_WIDTH_4}" height="{COL_HEIGHT_4}" height.compare="502"
-    width.x4cols="{COL_WIDTH_4}" height.x4cols="{COL_HEIGHT_4}"
-    width.x3cols="{COL_WIDTH_3}" height.x3cols="{COL_HEIGHT_3}"
-    width.x2cols="{COL_WIDTH_2}" height.x2cols="{COL_HEIGHT_2}"
-    rollOver="rollOverHandler(event)"
-    rollOut="rollOutHandler(event)"
-    mouseDown="mouseDownHandler(event)"
-    mouseMove="mouseMoveHandler(event)"
-    mouseUp="mouseUpHandler(event)"
-    click="clickHandler(event)"
-    currentState="x4cols"
-    >
-    <!-- automationName="{product.name}" -->
-    <js:beads>
-        <js:ContainerDataBinding />
-        <js:LayoutChangeNotifier watchedProperty="{borderStyles.borderColor}" initialValue="#FFFFFF" />
-    </js:beads>
-    <js:style>
-        <js:BindableCSSStyles id="borderStyles" borderStyle="solid" borderWidth="1"
-                               borderColor="#FFFFFF" backgroundColor="#FFFFFF"/>
-    </js:style>
-    <fx:Metadata>
-        [Event(name="purchase", type="samples.flexstore.ProductThumbEvent")]
-        [Event(name="compare", type="samples.flexstore.ProductThumbEvent")]
-        [Event(name="details", type="samples.flexstore.ProductThumbEvent")]
-    </fx:Metadata>
-
-    <fx:Script>
-        <![CDATA[
-
-		import org.apache.flex.events.*;
-        import org.apache.flex.utils.PointUtils;
-            
-        import samples.flexstore.Product;
-        import samples.flexstore.ProductThumbEvent;
-        
-        public static const COL_WIDTH_4:int = 162;
-        public static const COL_HEIGHT_4:int = 122;
-        public static const COL_WIDTH_3:int = 217;
-        public static const COL_HEIGHT_3:int = 165;
-        public static const COL_WIDTH_2:int = 327;
-        public static const COL_HEIGHT_2:int = 250;
-        public static const COMPARE_WIDTH:int = 162;
-        public static const HORIZONTAL_GAP:int = 2;
-        public static const VERTICAL_GAP:int = 3;
-
-        [Bindable]
-        public var product:Product;
-
-        private function rollOverHandler(event:MouseEvent):void
-		{
-            borderStyles.borderColor = "#CCCCCC";
-            //style["dropShadowEnabled"] = true;
-            buttons.visible = true;
-        }
-
-        private function rollOutHandler(event:MouseEvent):void
-		{
-            borderStyles.borderColor = "#FFFFFF";
-            //style["dropShadowEnabled"] = false;
-			buttons.visible = false;
-        }
-
-        private var dragStartPoint:Point;
-
-        public function mouseDownHandler(event:MouseEvent):void
-        {
-            if (event.target != purchase &&
-                event.target != compare &&
-                event.target != details)
-            {
-                dragStartPoint = new Point(event.clientX, event.clientY);
-            }
-        }
-
-        public function mouseMoveHandler(event:MouseEvent):void
-        {
-            if (dragStartPoint != null)
-            {
-                var dragEvent:DragEvent = new DragEvent(DragEvent.DRAG_START, true);
-                dragEvent.clientX = dragStartPoint.x;
-                dragEvent.clientY = dragStartPoint.y;
-                dragEvent.buttonDown = true;
-                dispatchEvent(dragEvent);
-
-                rollOutHandler(event);
-
-                dragStartPoint = null;
-            }
-        }
-
-        public function mouseUpHandler(event:MouseEvent):void
-        {
-            if (dragStartPoint != null)
-            {
-                dragStartPoint = null;
-            }
-        }
-
-        public function clickHandler(event:org.apache.flex.events.MouseEvent):void
-        {
-            if (event.target != purchase &&
-                event.target != compare &&
-                event.target != details)
-            {
-                dispatchEvent(new ProductThumbEvent(ProductThumbEvent.DETAILS, product));
-            }
-        }
-
-	]]>
-    </fx:Script>
-    <fx:Declarations>
-        <js:CurrencyFormatter currencySymbol="$" id="cf" fractionalDigits="2"/>        
-    </fx:Declarations>
-
-    <js:VContainer id="vb" width="100%" height="100%">
-        <js:style>
-            <js:SimpleCSSStyles paddingLeft="6" paddingTop="4" paddingRight="8" paddingBottom="4" />
-                                 <!--  gap="0">  -->
-        </js:style>
-        
-
-        <js:Label text="{product.name}" style="fontWeight:bold"/>
-
-        <js:HContainer width="100%" >
-            <js:style>
-                <js:SimpleCSSStyles paddingTop="0" /> <!-- gap="4 -->"
-            </js:style>
-
-            <js:Image id="img" height="45" width="45" 
-                     width.x3cols="60" height.x3cols="60"
-                     width.x2cols="60" height.x2cols="60"
-                     source="{product.image}" />
-
-            <js:VContainer id="descr" height="100%" >
-                <js:style>
-                    <js:SimpleCSSStyles paddingTop="0" right="0" /> <!--  gap="0"  -->
-                </js:style>
-                <js:Label text="{product.featureString}" width="60" height="48" />
-                <js:Label text="{cf.format(product.price)}" style="fontWeight:bold"/>
-				<js:Spacer height="4"/>
-                <js:Label text="{product.highlight1}" style="color:#EE8D0C" includeIn="x3cols, x2cols"/>
-                <js:Label text="{product.highlight2}" style="color:#EE8D0C" includeIn="x3cols, x2cols"/>
-            </js:VContainer>
-
-        </js:HContainer>
-
-        <js:Spacer height="8"/>
-
-        <js:Label id="compYears" text="Years: {product.experience}" includeIn="compare"/>
-        <js:Label id="compBlaze" text="BlazeDS: {product.blazeds}" includeIn="compare"/>
-        <js:Label id="compMobile" text="Mobile: {product.mobile}" includeIn="compare"/>
-        <js:Label id="compVideo" text="Video: {product.video}" includeIn="compare"/>
-        <js:Label id="compHigh1" text="Highlight: {product.highlight1}" includeIn="compare"/>
-        <js:Label id="compHigh2" text="Highlight: {product.highlight2}" includeIn="compare"/>
-        <js:Label text="Description:" includeIn="compare"/>
-        <js:MultilineLabel id="compDesc" text="{product.description}" width="100%" includeIn="compare"/>
-    </js:VContainer>
-
-
-    <js:VContainer id="buttons" visible="false" width="30">
-        <js:style>
-            <js:SimpleCSSStyles paddingRight="8" right="8" top="12" /> <!-- gap="4" -->
-        </js:style>
-        <js:ImageButton id="purchase" source="assets/button_cart_empty.png" className="hoverButton"
-            click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.PURCHASE, product))" 
-            width="30">
-            <js:beads>
-                <js:ToolTipBead toolTip="Add to cart"/>
-            </js:beads>
-        </js:ImageButton>
-        <js:ImageButton id="compare" source="assets/button_compare.png" className="hoverButton"
-            click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.COMPARE, product))" 
-            width="30">
-            <js:beads>
-                <js:ToolTipBead toolTip="Add to compare list"/>
-            </js:beads>
-        </js:ImageButton>
-        <js:ImageButton id="details" source="assets/button_details.png" className="hoverButton"
-            click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.DETAILS, product))" 
-            width="30">
-            <js:beads>
-                <js:ToolTipBead toolTip="Show details"/>
-            </js:beads>
-        </js:ImageButton>
-    </js:VContainer>
-
-    <js:states>
-
-        <js:State name="compare" />
-
-        <js:State name="x4cols" />
-
-        <js:State name="x3cols" />
-
-        <js:State name="x2cols"/>
-    </js:states>
-
-</js:Container>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/ProductDetails.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/ProductDetails.mxml b/examples/flexjs/FlexJSStore/src/productsView/ProductDetails.mxml
deleted file mode 100755
index fa32497..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/ProductDetails.mxml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009" 
-                 xmlns:js="library://ns.apache.org/flexjs/basic" 
-    xmlns:productsView="productsView.*"
-    >
-    <js:beads>
-        <js:ContainerDataBinding />
-    </js:beads>
-
-    <fx:Metadata>
-        [Event(name="purchase", type="samples.flexstore.ProductThumbEvent")]
-        [Event(name="compare", type="samples.flexstore.ProductThumbEvent")]
-        [Event(name="browse", type="samples.flexstore.ProductThumbEvent")]
-    </fx:Metadata>
-
-    <fx:Script>
-        <![CDATA[
-
-		import samples.flexstore.Product;
-		import samples.flexstore.ProductThumbEvent;
-
-        private var _product:Product;
-        
-        [Bindable]
-        public function get product():Product
-        {
-            return _product;
-        }
-        
-        public function set product(p:Product):void
-        {
-            _product = p;
-            tn.selectedIndex = 0;
-        }
-        
-	]]>
-    </fx:Script>
-
-    <fx:Declarations>
-        <js:CurrencyFormatter currencySymbol="$" id="cf" fractionalDigits="2"/>        
-    </fx:Declarations>
-
-    <js:states>
-        <js:State name="Features" />
-        <js:State name="Support" />
-    </js:states>
-    
-    <js:transitions>
-        <js:Transition>
-            <js:Fade />
-        </js:Transition>
-    </js:transitions>
-    
-    <js:ButtonBar id="tn" width="100%" change="currentState = tn.selectedItem as String">
-        <js:dataProvider>
-            <fx:Array>
-                <fx:String>Features</fx:String>
-                <fx:String>Support</fx:String>
-            </fx:Array>
-        </js:dataProvider>
-    </js:ButtonBar>
-    <js:Container >
-        <js:style>
-            <js:SimpleCSSStyles left="4" right="8" top="34" bottom="4" />
-        </js:style>
-                    
-
-        <js:VContainer includeIn="Features" >
-            <js:style>
-                <!--<js:SimpleCSSStyles gap="8"-->
-                <js:SimpleCSSStyles
-                    left="8" top="8" right="8" bottom="8"/>
-            </js:style>
-            <js:Container style="left:0px;right:0px">
-
-                <js:Image id="img" width="101" height="101" source="{product.image}"/>
-
-                <js:VContainer id="descr" >
-                    <js:style>
-                        <js:SimpleCSSStyles top="0" left="105" right="0" bottom="20" />
-                        <!--<js:SimpleCSSStyles paddingTop="0" gap="4" />-->
-                    </js:style>
-                    
-                    <js:Label text="{product.name}" style="fontSize:11;fontWeight:'bold'"/>
-
-	                <js:Label text="{product.featureString}" width="80" height="48" />
-
-                    <js:Label text="{product.highlight1}" style="color:#EE8D0C"/>
-
-                    <js:Label text="{product.highlight2}" style="color:#EE8D0C"/>
-
-                    <js:Label text="{cf.format(product.price)}" style="fontWeight:'bold'"/>
-
-                </js:VContainer>
-            </js:Container>
-
-            <js:Label id="descriptionText" style="left:0px;right:0px;bottom:0px" text="{product.description}"/>
-
-        </js:VContainer>
-
-        <productsView:ProductSupport width="100%" height="100%" includeIn="Support" />
-
-    </js:Container>
-
-    <js:VContainer>
-        <js:style>
-            <js:SimpleCSSStyles marginTop="4" right="16" top="36" />
-        </js:style>
-        <js:Spacer width="100%"/>
-        <js:ImageButton id="purchase" source="assets/button_cart_empty.png" click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.PURCHASE, product))" width="30">
-            <js:beads>
-                <js:ToolTipBead toolTip="Add to cart"/>
-            </js:beads>
-        </js:ImageButton>
-        <js:ImageButton id="compare" source="assets/button_compare.png" click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.COMPARE, product))" width="30">
-            <js:beads>
-                <js:ToolTipBead toolTip="Add to compare list"/>
-            </js:beads>
-        </js:ImageButton>
-        <js:ImageButton id="tiles" source="assets/button_tiles.png" click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.BROWSE, product));" width="30">
-            <js:beads>
-                <js:ToolTipBead toolTip="Back to thumbnail view"/>
-            </js:beads>
-        </js:ImageButton>
-    </js:VContainer>
-
-</js:Container>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore/src/productsView/ProductFilterPanel.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexJSStore/src/productsView/ProductFilterPanel.mxml b/examples/flexjs/FlexJSStore/src/productsView/ProductFilterPanel.mxml
deleted file mode 100755
index 26deaa9..0000000
--- a/examples/flexjs/FlexJSStore/src/productsView/ProductFilterPanel.mxml
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
-
--->
-<js:VContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
-                  xmlns:js="library://ns.apache.org/flexjs/basic" 
-    xmlns:productsView="productsView.*"
-    xmlns:flexstore="samples.flexstore.*"
-    height="100%" 
-    currentState="showingThumbnails"
-    initComplete="series.selectedIndex = 0">
-    <js:style>
-        <js:SimpleCSSStyles paddingLeft="4" 
-                               paddingRight="12" 
-                               paddingTop="12" 
-                               paddingBottom="8" 
-                               />
-
-    </js:style>
-    
-    <fx:Metadata>
-       [Event(name="filter", type="samples.flexstore.ProductFilterEvent")] 
-       [Event("compare")]
-    </fx:Metadata>
-    
-    <fx:Script>
-        <![CDATA[
-        import org.apache.flex.html.Slider;
-        import org.apache.flex.html.SimpleAlert; 
-        import samples.flexstore.ProductFilterEvent;
-           
-        private var thumbBeingPressed:Boolean;
-           
-        private function dispatchFilter():void
-        {
-            var event:ProductFilterEvent = 
-                new ProductFilterEvent(filter, thumbBeingPressed);
-            dispatchEvent(event);
-            currentState = "showingThumbnails";
-        }
-        
-        private function sliderValue(values:Array, index:int):Number
-        {
-            return values[index];
-        }
-        
-        private function productRemoved():void
-        {
-            if (currentState == "showingComparison")
-            {
-                if (productList.items.length == 0)
-                {
-                    dispatchFilter();
-                }
-                else
-                {
-                    attemptCompare();
-                }
-            }
-        }
-        
-        private function attemptCompare():void
-        {
-            if (productList.items.length > 0)
-            {
-                dispatchEvent(new Event("compare"));
-                currentState = "showingComparison";
-            }
-            else
-            {
-                SimpleAlert.show("There are no items to compare.", "Compare");
-            }
-        }
-        
-        ]]>
-    </fx:Script>
-    <fx:Declarations>
-        <flexstore:ProductFilter id="filter">
-            <flexstore:experience>{series.selectedItem}</flexstore:experience>
-            <flexstore:minPrice>{loPrice.value}</flexstore:minPrice>
-            <flexstore:maxPrice>{hiPrice.value}</flexstore:maxPrice>
-            <flexstore:blazeds>{cbBlazeDS.selected}</flexstore:blazeds>
-            <flexstore:mobile>{cbMobile.selected}</flexstore:mobile>
-            <flexstore:video>{cbVideo.selected}</flexstore:video>
-        </flexstore:ProductFilter>
-        
-        <js:CurrencyFormatter currencySymbol="$" id="cf"/>    
-        
-    </fx:Declarations>
-    <js:beads>
-        <js:ContainerDataBinding />
-    </js:beads>
-    
-    <js:Label text="Find" className="sectionHeader"/>
-    
-    <js:Container width="100%">
-        <js:beads>
-            <js:FlexibleFirstChildHorizontalLayout />
-        </js:beads>
-        <js:TextInput className="glass" width="100%"/>
-        <js:TextButton className="glass" text="Go" click="SimpleAlert.show('This feature is not implemented in this sample', 'Find')"/>
-    </js:Container>
-
-    <js:Spacer height="18"/>
-
-    <js:HRule width="100%"/>
-
-    <js:Spacer height="8"/>
-
-    <js:HContainer>
-        <js:style>
-            <js:SimpleCSSStyles paddingTop="0" paddingLeft="0" verticalAlign="bottom" />
-        </js:style>
-        <js:Label text="Filter" className="sectionHeader"/>
-        <js:Label text="({filter.count} items selected)" >
-            <js:style>
-                <js:SimpleCSSStyles fontWeight="bold" />
-                <!--<js:SimpleCSSStyles color="{getStyle('themeColor')}" fontWeight="bold" />-->
-            </js:style>
-        </js:Label>
-    </js:HContainer>
-
-    <js:Spacer height="8"/>
-
-    <js:Label text="Years of Experience"/>
-
-    <js:DropDownList id="series" className="glass" width="140" change="dispatchFilter();">
-        <js:dataProvider>
-            <fx:Array>
-                <fx:String>All</fx:String>
-                <fx:String>3</fx:String>
-                <fx:String>5</fx:String>
-                <fx:String>7</fx:String>
-                <fx:String>9</fx:String>
-            </fx:Array>                
-        </js:dataProvider>
-    </js:DropDownList>
-
-    <js:Spacer height="18"/>
-
-    <js:Label text="Price"/>
-
-    <!--<s:HSlider id="priceSlider" className="glassSlider" minimum="0" maximum="200" tickInterval="10" snapInterval="10"
-        width="100%" thumbCount="2" values="[0,200]" labels="[$0,$200]" liveDragging="true" dataTipFormatFunction="{cf.format}"
-        change="dispatchFilter()"
-        thumbPress="thumbBeingPressed=true"
-        thumbRelease="thumbBeingPressed=false;dispatchFilter()"
-        />-->
-    <js:HContainer id="nsholder" width="100%">
-        <js:NumericStepper width="48%" id="loPrice" minimum="0" maximum="{hiPrice.value}" value="0" valueChange="dispatchFilter()" />
-        <js:NumericStepper width="48%" id="hiPrice" minimum="{loPrice.value}" maximum="200" value="200" valueChange="dispatchFilter()" />
-    </js:HContainer>
-
-    <js:Spacer height="18"/>
-
-    <js:Label text="Required Features"/>
-
-    <js:Spacer height="4"/>
-
-    <js:CheckBox id="cbBlazeDS" className="glass" text="BlazeDS" click="dispatchFilter();"/>
-    <js:Spacer height="4"/>
-    <js:CheckBox id="cbMobile" className="glass" text="Mobile" click="dispatchFilter()"/>
-    <js:Spacer height="4"/>
-    <js:CheckBox id="cbVideo" className="glass" text="Video" click="dispatchFilter();"/>
-
-    <js:Spacer height="18"/>
-
-    <js:HRule width="100%"/>
-
-    <js:Spacer height="8"/>
-
-        <js:HContainer>
-            <js:Label text="Compare" className="sectionHeader"/>
-            <js:Label text="(Drag items here to compare)" className="instructions"/>
-        </js:HContainer>
-
-
-    <js:Spacer height="4"/>
-
-    <!-- height is maxItems * ProductListItem.HEIGHT + 2px border -->
-    <productsView:ProductList id="productList" height="{productList.maxItems * ProductListItem.HEIGHT + 2}" width="100%"
-        newItemStartX="300" newItemStartY="-100" maxItems="4" 
-        removeProduct="productRemoved()"/>
-
-    <js:Spacer height="8"/>
-    
-    <js:ImageAndTextButton id="compareButton" className="glass" 
-                  click.showingThumbnails="attemptCompare()"
-                  click.showingComparison="dispatchFilter()"            
-                  text.showingComparison="Back to thumbnail view"
-                  text.showingThumbnails="Compare Items"
-                  image.showingThumbnails="assets/icon_compare.png"
-                  image.showingComparison="assets/icon_tiles.png" />
-    
-    <js:states>
-       <js:State name="showingThumbnails" />
-       <js:State name="showingComparison" />
-    </js:states>
-
-</js:VContainer>


Mime
View raw message