<?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.

-->
<!-- Christophe Coenraets, http://coenraets.org -->
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
		xmlns:s="library://ns.adobe.com/flex/spark"
		destructionPolicy="never">
	
	<fx:Script>
		<![CDATA[
			
			import mx.collections.ArrayCollection;
			
			import spark.events.IndexChangeEvent;

			[Embed("assets/phone.png")]
			private var phoneIcon:Class;
			
			[Bindable]
			protected var alerts:ArrayCollection = new ArrayCollection([
				{type: "tel", name: "Call Financial Advisor", details: "617-219-2000", icon: phoneIcon},
				{type: "http", name: "Adobe posts strong results", details: "http://finance.google.com"},
				{type: "http", name: "Dow and S&P down for second week", details: "http://bloomberg.com"}]);

			protected function list_changeHandler(event:IndexChangeEvent):void
			{
				var action:Object = list.selectedItem;
				list.selectedIndex = -1;
				switch (action.type)
				{
					case "tel":
						navigateToURL(new URLRequest("tel:" + action.details));
						break;
					
					case "http":
						navigateToURL(new URLRequest(action.details));
						break;
				}	
			}
			
		]]>
	</fx:Script>
	
	<s:List id="list" top="0" bottom="0" left="0" right="0" dataProvider="{alerts}" change="list_changeHandler(event)">
		<s:itemRenderer>
			<fx:Component>
				<s:IconItemRenderer
					labelField="name" 
					messageField="details" 
					decorator="{data.icon}"
					height="70"/>
			</fx:Component>
		</s:itemRenderer>
	</s:List>
	
</s:View>
