| <?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. |
| |
| --> |
| <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
|
| layout="absolute" minWidth="990" minHeight="550"
|
| preinitialize="loadStyle()"
|
| creationComplete="startService()"
|
| pageTitle="FlexStore">
|
|
|
| <mx:Script>
|
| <![CDATA[
|
| import mx.collections.IViewCursor;
|
| import mx.collections.ArrayCollection;
|
| import samples.flexstore.Product;
|
| import mx.rpc.events.ResultEvent;
|
| import mx.events.StyleEvent;
|
| import mx.styles.StyleManager;
|
|
|
| [Bindable]
|
| private var catalog:ArrayCollection;
|
|
|
| private var currentTheme:String = "beige";
|
|
|
| private function toggleTheme():void
|
| {
|
| if (currentTheme == "beige")
|
| {
|
| currentTheme = "blue";
|
| }
|
| else
|
| {
|
| currentTheme = "beige";
|
| }
|
|
|
| loadStyle();
|
| }
|
|
|
| private function startService():void
|
| {
|
| productService.send();
|
| }
|
|
|
| private function loadStyle():void
|
| {
|
| var eventDispatcher:IEventDispatcher =
|
| StyleManager.loadStyleDeclarations(currentTheme + ".swf");
|
| eventDispatcher.addEventListener(StyleEvent.COMPLETE, completeHandler);
|
| }
|
|
|
| private function completeHandler(event:StyleEvent):void
|
| {
|
| image.source = acb.getStyle("storeLogo");
|
| homeView.updateMapImage();
|
| super.initialized = true;
|
| }
|
|
|
| private function productServiceResultHandler(event:ResultEvent):void
|
| {
|
| //HTTPService returns an ArrayCollection for nested arrays
|
| var products:ArrayCollection = event.result.catalog.product;
|
| var temp:ArrayCollection = new ArrayCollection();
|
| var cursor:IViewCursor = products.createCursor();
|
| while (!cursor.afterLast)
|
| {
|
| var product:Product = new Product();
|
| product.fill(cursor.current);
|
| temp.addItem(product);
|
| cursor.moveNext();
|
| }
|
| catalog = temp;
|
| }
|
|
|
| override public function set initialized(value:Boolean):void
|
| {
|
| // Hold off until the Runtime CSS SWF is done loading.
|
| }
|
| ]]>
|
| </mx:Script>
|
|
|
| <mx:Style source="main.css"/>
|
|
|
| <mx:HTTPService id="productService" url="data/catalog.xml"
|
| result="productServiceResultHandler(event)"/>
|
|
|
| <mx:VBox width="990" paddingLeft="0" paddingRight="0" horizontalCenter="0" top="12">
|
|
|
| <mx:ApplicationControlBar id="acb" width="100%" styleName="storeControlBar">
|
| <mx:Image id="image"
|
| click="toggleTheme()"
|
| toolTip="Change Theme"/>
|
| <mx:ToggleButtonBar
|
| height="100%"
|
| dataProvider="{storeViews}"
|
| styleName="storeButtonBar"/>
|
| </mx:ApplicationControlBar>
|
|
|
| <!-- using a creationPolicy of "auto" or "queued" has a bug at time of writing
|
| that prevents initial states from applying styles correctly.
|
| plus the instantiation of the cart view can cause a performance
|
| hiccup which we might prefer at startup -->
|
| <mx:ViewStack id="storeViews" width="100%" height="550" creationPolicy="all">
|
| <HomeView id="homeView" label="Home"
|
| showEffect="WipeDown" hideEffect="WipeUp"
|
| />
|
| <ProductsView id="pView" label="Products" catalog="{catalog}"
|
| showEffect="WipeDown" hideEffect="WipeUp"
|
| />
|
| <SupportView id="supportView" label="Support"
|
| showEffect="WipeDown" hideEffect="WipeUp"
|
| />
|
| </mx:ViewStack>
|
|
|
| </mx:VBox>
|
|
|
| </mx:Application>
|