﻿package com.comp
{
	import com.controller.ComoboBoxController;
	
	import fl.data.DataProvider;
	
	import fl.controls.ComboBox
	import flash.events.Event
	import flash.text.TextFormat
	import flash.text.TextField
	
	/**
	 * ...
	 * @author Snehalata Nagaje
	 */
	public class ComboboxWidget
	{
		private var c_xmlCaptivateParams:XML;
		private var c_comboControllerObj:ComoboBoxController;
		private var c_arrComoboItems:Array;
		private var c_variableSelected:String;
		private var comoboxEditUI:ComoboxEditUI
		private var xmlOut:String;
		private var textFormattingData:XMLList
		private var currentSelectedTheme:String
		private var widget_cmb:ComboBox
		public function ComboboxWidget()
		{
			init();
		}
		
		private function init():void
		{
			c_arrComoboItems= new Array();
			c_comboControllerObj = ComoboBoxController.getInstance();
			
			c_xmlCaptivateParams =c_comboControllerObj.c_xmlCaptivateParams;
			c_arrComoboItems=c_xmlCaptivateParams.data.split(",");
			currentSelectedTheme=String(c_xmlCaptivateParams.selectedTheme);
			c_variableSelected=String(c_xmlCaptivateParams.variable);
			textFormattingData=c_xmlCaptivateParams.textProperties
		}
		
		public function drawEditUI():void {
			
			 comoboxEditUI= new ComoboxEditUI();
			comoboxEditUI.items_txt.text=c_arrComoboItems.join(",");
			comoboxEditUI.variable_txt.text=c_variableSelected
			c_comboControllerObj.c_objRootRef.addChild(comoboxEditUI);
			comoboxEditUI.oTextFormatterComp.setData(textFormattingData);
			comoboxEditUI.oTextFormatterComp.init();
			currentSelectedTheme=String(c_xmlCaptivateParams.selectedTheme);
			pupulateThemes();
			SelectDefaultTheme();
			
			//items_txt.addEventListener(Event.CHANGE
			
		}
		function pupulateThemes():void
		{
			var dp:DataProvider = new DataProvider();
			dp.addItem({label:"Default"});
			dp.addItem({label:"Mac"});
			dp.addItem({label:"Windows"});
			comoboxEditUI.theme_cb.dataProvider=dp
			comoboxEditUI.theme_cb.addEventListener(Event.CHANGE,OnThemeChanged);
		}
		public function generateComoboBox():void
		{
			
			var dp:DataProvider = new DataProvider();
			widget_cmb= new ComboBox();
			widget_cmb.textField.textField.autoSize="left";
			for (var i = 0; i < c_arrComoboItems.length; i++)
			{
				//trace("generateComoboBox"+c_arrComoboItems[i]);
				dp.addItem({label:c_arrComoboItems[i],data:c_arrComoboItems[i]});
			}
			widget_cmb.dataProvider = dp;
			widget_cmb.addEventListener(Event.CHANGE,OnSelectionchanged);
			widget_cmb.drawNow();
			
			//trace("dp"+dp);
			widget_cmb.x=0
			widget_cmb.y=0
			trace("textFormattingData"+textFormattingData);
			
			c_comboControllerObj.c_objRootRef.addChild(widget_cmb);
			var comboBoxStyle:TextFormat= new TextFormat();
			comboBoxStyle.underline=textFormattingData.textDecoration.attribute("underline")=="true"?true:false
			//comboBoxStyle.align="center"
			comboBoxStyle.italic=textFormattingData.textDecoration.attribute("italic")=="true"?true:false;
			comboBoxStyle.bold=textFormattingData.textDecoration.attribute("bold")=="true"?true:false;
			comboBoxStyle.font=textFormattingData.font.attribute("face")
			comboBoxStyle.size=Number(textFormattingData.font.attribute("size"));
			comboBoxStyle.color=textFormattingData.color.attribute("textColor")
			comboBoxStyle.leading=3
			
			widget_cmb.textField.setStyle("textFormat",comboBoxStyle);
			//trace("widget_cmb.textField.textWidth"+widget_cmb.textField.textWidth);
			//trace("widget_cmb.width"+widget_cmb.width);
			
			var txt:TextField= new TextField();
			var maxWidth=0;
			for (i = 0; i < c_arrComoboItems.length; i++)
			{
				txt.autoSize="left"
				txt.setTextFormat(comboBoxStyle);
				txt.text=c_arrComoboItems[i]
				txt.setTextFormat(comboBoxStyle);
				txt.border=true
				if(maxWidth<txt.width)
				{
					maxWidth=txt.width
				}
				
			}
			
			// to restrict to default size of combo
			if(maxWidth>100)
			{
				widget_cmb.width=maxWidth+30
			}
			
			
			widget_cmb.dropdown.setRendererStyle("textFormat",comboBoxStyle);
			ApplyTheme();
			c_comboControllerObj.c_objRootRef[c_variableSelected]=widget_cmb.selectedItem.data
			c_comboControllerObj.c_objRootRef.StoreVariableInVarHand(c_variableSelected,c_comboControllerObj.c_objRootRef[c_variableSelected]);
			
		}
		private function ApplyTheme():void
		{
			
			switch(currentSelectedTheme)
			{
				case "Mac":
				
				widget_cmb.setStyle("overSkin",ComboBox_overSkin_mac)
				widget_cmb.setStyle("upSkin",ComboBox_upSkin_mac)
				widget_cmb.setStyle("downSkin",ComboBox_downSkin_mac)
				widget_cmb.setStyle("disabledSkin",ComboBox_disabledSkin_mac)
				
				widget_cmb.setStyle("cellRenderer",ComboBox_disabledSkin_mac)
				
				widget_cmb.setStyle("downArrowDisabledSkin",ScrollArrowDown_disabledSkin_mac)
				widget_cmb.setStyle("downArrowDownSkin",ScrollArrowDown_downSkin_mac)
				widget_cmb.setStyle("downArrowOverSkin",ScrollArrowDown_overSkin_mac)
				widget_cmb.setStyle("downArrowUpSkin",ScrollArrowDown_upSkin_mac)


				widget_cmb.setStyle("thumbUpSkin",ScrollThumb_upSkin_mac)
				widget_cmb.setStyle("thumbDisabledSkin ",ScrollThumb_overSkin_mac)
				widget_cmb.setStyle("thumbDownSkin",ScrollThumb_downSkin_mac)
				widget_cmb.setStyle("thumbOverSkin",ScrollThumb_overSkin_mac)

				widget_cmb.setStyle("thumbIcon",ScrollBar_thumbIcon_mac)
				
				
				widget_cmb.setStyle("trackDisabledSkin",ScrollTrack_skin_mac)
				widget_cmb.setStyle("trackDownSkin",ScrollTrack_skin_mac)
				widget_cmb.setStyle("trackOverSkin",ScrollTrack_skin_mac)
				widget_cmb.setStyle("trackUpSkin",ScrollTrack_skin_mac)
				
				widget_cmb.setStyle("upArrowDisabledSkin",ScrollArrowUp_disabledSkin_mac)
				widget_cmb.setStyle("upArrowDownSkin ",ScrollArrowUp_downSkin_mac)
				widget_cmb.setStyle("upArrowOverSkin",ScrollArrowUp_overSkin_mac)
				widget_cmb.setStyle("upArrowUpSkin",ScrollArrowUp_upSkin_mac)
				
				break;
				
				case "Default":
				
				break;
				case "Windows":
				widget_cmb.setStyle("overSkin",ComboBox_overSkin_win)
				widget_cmb.setStyle("upSkin",ComboBox_upSkin_win)
				widget_cmb.setStyle("downSkin",ComboBox_downSkin_win)
				widget_cmb.setStyle("disabledSkin",ComboBox_disabledSkin_win)
				
				widget_cmb.setStyle("cellRenderer",ComboBox_disabledSkin_win)
				
				widget_cmb.setStyle("downArrowDisabledSkin",ScrollArrowDown_disabledSkin_win)
				widget_cmb.setStyle("downArrowDownSkin",ScrollArrowDown_downSkin_win)
				widget_cmb.setStyle("downArrowOverSkin",ScrollArrowDown_overSkin_win)
				widget_cmb.setStyle("downArrowUpSkin",ScrollArrowDown_upSkin_win)


				widget_cmb.setStyle("thumbArrowUpSkin",ScrollThumb_upSkin_win)
				widget_cmb.setStyle("thumbDisabledSkin ",ScrollThumb_overSkin_win)
				widget_cmb.setStyle("thumbDownSkin",ScrollThumb_downSkin_win)
				widget_cmb.setStyle("thumbOverSkin",ScrollThumb_overSkin_win)

				widget_cmb.setStyle("thumbIcon",ScrollBar_thumbIcon_win)
				
				
				widget_cmb.setStyle("trackDisabledSkin",ScrollTrack_skin_win)
				widget_cmb.setStyle("trackDownSkin",ScrollTrack_skin_win)
				widget_cmb.setStyle("trackOverSkin",ScrollTrack_skin_win)
				widget_cmb.setStyle("trackUpSkin",ScrollTrack_skin_win)
				
				widget_cmb.setStyle("upArrowDisabledSkin",ScrollArrowUp_disabledSkin_win)
				widget_cmb.setStyle("upArrowDownSkin ",ScrollArrowUp_downSkin_win)
				widget_cmb.setStyle("upArrowOverSkin",ScrollArrowUp_overSkin_win)
				widget_cmb.setStyle("upArrowUpSkin",ScrollArrowUp_upSkin_win)
				break;
			}
		}
		private function OnThemeChanged(evt:Event):void
		{
			
		}
		private function SelectDefaultTheme():void
		{
			var l=comoboxEditUI.theme_cb.dataProvider.length;
			var aThems=comoboxEditUI.theme_cb.dataProvider
			for(var i=0;i<l;i++)
			{
				if(aThems.getItemAt(i).label==currentSelectedTheme)
				{
					comoboxEditUI.theme_cb.selectedIndex=i
					break;
				}
			}
		}
		private function OnSelectionchanged(evt:Event):void
		{
			c_comboControllerObj.c_objRootRef[c_variableSelected]=evt.target.selectedItem.data
			c_comboControllerObj.c_objRootRef.StoreVariableInVarHand(c_variableSelected,c_comboControllerObj.c_objRootRef[c_variableSelected]);
		}
		// this will form xml ad per user input
		public function objectToString()
		{
			var textformattedData=comoboxEditUI.oTextFormatterComp.getData()
			
			var  xmlOut="<mydata><data>"+comoboxEditUI.items_txt.text+"</data><variable>"+comoboxEditUI.variable_txt.text+"</variable>"+String(textformattedData)+"<selectedTheme>"+comoboxEditUI.theme_cb.selectedItem.label+"</selectedTheme></mydata>";
			
			//c_xmlCaptivateParams=new XML(c_xmlCapivateString);
			return xmlOut;
		}
		
		
		
		
		
		
		
		
		
		
		
	}
	
}