<?xml version="1.0" encoding="utf-8"?>
<!--
////////////////////////////////////////////////////////////////////////////////
// 株式会社　アイエルエス
// Copyright 2008 ILS
// All Rights Reserved.
//
// NOTICE:ズーム一覧画面
////////////////////////////////////////////////////////////////////////////////
-->
<biz:AppPanel xmlns="commonLibrary.sharedComponent.*" 
	xmlns:biz="bizLibrary.sharedComponent.*" 
	xmlns:vld="commonLibrary.sharedValidators.*" 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	width="362"
	height="406" 
	modalTransparency="0.8"
	creationComplete="onCreationComplete();" 
	xmlns:model="cls.com.ils.biz.model.*" 
	xmlns:comp="cls.com.ils.common.component.*" xmlns:ils="cls.com.ils.common.component.dataGridClasses.*">

    <!-- データモデルの定義 -->
	<model:SharedDataModel id="dataModel"/>
	<model:SharedDataModel id="clrDataModel"/>
	
    <!-- コントロール → データモデルのバインド処理 -->

	<!-- データ検証 -->
    <mx:Array id="validator_ary">
    </mx:Array>
	<mx:Script>
		<![CDATA[
			import cls.com.ils.biz.ctrl.TsSharedSearch;
			import mx.events.ListEvent;
			import mx.events.CloseEvent;
			import mx.controls.Alert;
			import mx.managers.PopUpManager;
			import cls.com.ils.biz.model.enum.*;
			import mx.events.DataGridEvent;
			import cls.com.ils.biz.utility.logging.AppLoggingTool;
			import cls.com.ils.common.model.MsgMgr;
			import cls.com.ils.biz.ctrl.*;
			import mx.core.Application;
			
			public var callPg:String;
			private var chgFlg:Boolean;	//変更フラグ
			//呼び出し元のデータ
            public var ownerData:Object;
			//呼び出し元の項目
            public var dataField:String;			

			/**
			 * 共通初期化処理
			 * 
			 */		
			override public function onCreationComplete():void{
				
				// ビジーにする
				this.busyMode = false;
								
				// 初期にフォーカスを当てるオブジェクトを指定する
//				srchFcsObject = this.tinName;
				
				setInput();
				
				callPg = this.parentParams[0];

				//パラメータを無効にする
				dataModel.initParam();		
				dataModel.addParam("1");	//一覧パラメータ(初期表示)
				dataModel.addParam("");		//コード検索なし	
				
				// メイン検索処理
				var dataCtrl:TsSharedSearch = new TsSharedSearch(callPg,this);
				dataCtrl.setOkFunction(setSrchOk);
				dataCtrl.searchCtrl(dataModel);
				
				// ビジーを解除する
				this.busyMode = true;

			}
			
			/**
			 * 検索処理時検索結果なしレスポンス取得メソッド
			 * @param cd メッセージコード
			 * @param message メッセージ内容
			 * 
			 */	
			override public function getSrchNoDataResponse(cd:String,message:String):void{

				MsgMgr.dispServerMsgAndCallEvent(cd,message,this.title,Alert.OK,setSrchNoData);
	
			}

			//検索処理時NG
			private function setSrchNoData(e:CloseEvent):void{
				// カーソルを設定 
				this.setBusyCursor(false);
	
				callLater(setFocusSrchObj);
	
			}
			
			/**
			 * 画面閉じる処理 
			 */		
			override public function close():void{
				parentDisplay.enabled = true;
//				parentDisplay.srchFcsObject = ownerData.tinCode;
//				parentDisplay.setFocusSrchObj();
				
				parentDisplay.focusManager.activate();
				this.focusManager.deactivate();
				// 子画面起動状態を解除する
				parentDisplay.runInitAfterProc()
				PopUpManager.removePopUp(this);			

			}
			
			//検索処理時OK
			private function setSrchOk():void{
				if(this.dgMain.rowCount == 0){
				}else{
					filterArea.enabled = true;
					enableFilter(true);
					this.dgMain.setFocus();
					// 1行目を選択する
					this.dgMain.selectedIndex = 0;
					//選択してからchangeイベントがあれば、changeイベントを生成する。
					//コードから選択するとchangeイベントが発生しないため
					if(this.dgMain.hasEventListener(ListEvent.CHANGE) == true){
						this.dgMain.dispatchEvent(new ListEvent(ListEvent.CHANGE));	
					}
				}
			}

			// 入力設定処理
			private function setInput():void{
				
				//ヘッダー部をクリア
				this.clearHead();
				//ボディー部をクリア
				this.clearBody();
				
			}

			// 検索処理
			private function search():void{			
				// ビジーにする
				this.busyMode = false;
				
				//パラメータを無効にする
				dataModel.initParam();		
				dataModel.addParam("2");	//一覧パラメータ	
				dataModel.addParam("");		//コード検索なし	
				
				// メイン検索処理
				var dataCtrl:TsSharedSearch = new TsSharedSearch(callPg,this);
				dataCtrl.setOkFunction(setSrchOk);
				dataCtrl.searchCtrl(dataModel);

				// ビジーを解除する
				this.busyMode = true;
			}

			// 選択処理
			private function selRow():void{
				if(dgMain.selectedIndex>=0){
					ownerData.tinCode.clearMe();							
					ownerData.tinCode.text = dgMain.selectedItem.code.toString();
					ownerData.lblName.text = dgMain.selectedItem.name.toString();
					close();
				}
			}

		    /**
		     *  @private
		     */
		    private function onKeyDown(event:KeyboardEvent):void
		    {
	            //Enterキーに対するイベントの場合
	            if(event.keyCode == Keyboard.ENTER)
	            {
	            	//選択処理
	                selRow();
	            }
	
		    }

			private function onChangeFilter():void
			{
				dgMain.dataProvider.refresh();
				callLater(setSelectedIndex);
			}

			private function setSelectedIndex():void
			{
				if(dgMain.dataProvider.length > 0){
					this.dgMain.selectedIndex = 0;
				}else{
					this.dgMain.selectedIndex = -1;
				}
				//選択してからchangeイベントがあれば、changeイベントを生成する。
				//コードから選択するとchangeイベントが発生しないため
				if(this.dgMain.hasEventListener(ListEvent.CHANGE) == true){
					this.dgMain.dispatchEvent(new ListEvent(ListEvent.CHANGE));	
				}
			}

			private function enableFilter(value:Boolean):void
        	{
            	if(value)
            	{
					dgMain.dataProvider.filterFunction=processFilter;
            	}else{
      				dgMain.dataProvider.filterFunction=null;
      				tinNameFilter.clearMe();
            	}
      			dgMain.dataProvider.refresh();
        	}	
			
	        // Filter function
	        private function processFilter(item:Object):Boolean
	        {
			      var nameRet:int = 0;
			      var iRet:int = 0;
			      var ret:Boolean = false;
			
			      // If no filter text, or a match, then true
			      if (!item.name.length ||
			          (item.name.toUpperCase().indexOf(tinNameFilter.text.toUpperCase()) >= 0))
			            {
			             nameRet = 1;
			            }

	            if(nameRet == 1)
	            {
	                ret = true;
	            }
			      return ret;
	        }

		]]>
	</mx:Script>
	<comp:IlsVBox height="100%" id="boxBody"
		paddingBottom="10" left="10" right="10" top="10">
	   	<FilterBox width="100%" id="filterArea" enabled="false">
			<TsFormItem label="フィルタ" height="23" color="#FFFFFF" labelWidth="60">
			</TsFormItem>
			<TsFormItem label="名称" labelWidth="30" direction="horizontal">
				<biz:TsTextInput width="165" id="tinNameFilter"  change="onChangeFilter()" imeModeEx="{IMEConversionMode.JAPANESE_HIRAGANA}"/>
			</TsFormItem>
	   	</FilterBox>
		<TsDataGrid width="100%" height="100%" id="dgMain"
			dataProvider="{dataModel.resXml.data.item}"
			doubleClickEnabled="true"
			itemDoubleClick="selRow()"
			keyDown="onKeyDown(event)"
			>
            <columns>
                <mx:DataGridColumn width="20" dataField="code" headerText="コード" editable="false"/>
                <mx:DataGridColumn width="35" dataField="name" headerText="名称" editable="false"/>
            </columns>
		</TsDataGrid>
		
	</comp:IlsVBox>
	<mx:ControlBar>
		<mx:Spacer width="100%"/>
		<Button label="{ScreenItemName.BTN_SEL_NAME}" id="btnSel" click="selRow()"/>
		<CloseButton id="btnClose"/>
	</mx:ControlBar>
</biz:AppPanel>
