tanamonの稀に良く書く日記

KEEP CALM AND DRINK BEER

はじめてのFlex その7

今回はYUI Frameworkを導入してみます。
YUIは「ゆい」と読みますす。


まずは以下のURLからakabana.yui-frameworksをダウンロードします。
http://akabana.sandbox.seasar.org/ja/downloads.html


Flex Builder 3を起動し、ファイル→新規→Flexプロジェクトを選び、

  • プロジェクト名:HelloYuiWorld
  • アプリケーションの種類:Webアプリケーション

を指定して「終了」ボタンでプロジェクトを作成します。


ファイル→インポート→Flexプロジェクトを選び、

を指定して「終了」ボタンでyui-frameworksプロジェクトをインポートします。

※問題ビューに「不明な Flex SDK : "Flex Moxie M2"」と表示されている場合、プロジェクトyui-frameworksを右クリックしてプロパティを開き、Flex ライブラリコンパイラの「Flex SDKのバージョン」を「デフォルトのSDKを使用する」に変更しておきます。
(1.0.0-alpha7で発生)


プロジェクトyui-frameworksの中から以下のファイルをプロジェクトHelloYuiWorldの下にコピーします。

  • yui-frameworks/target/swc/yui-frameworks.swc → HelloYuiWorld/libs/yui-frameworks.swc
  • yui-frameworks/src/main/resources/yui-metadata-config.xml → HelloYuiWorld/libs/yui-metadata-config.xml


プロジェクトHelloYuiWorldを右クリックしてプロパティを開き、
Flexコンパイラ」の「追加コンパイラ引数」を
「-locale ja_JP -load-config+=../libs/yui-metadata-config.xml
に変更します。


これで環境が整いました。
試しに前回までのプログラムをYUIに移植してみます。

HelloYuiWorld.mxml

<?xml version="1.0" encoding="utf-8"?>
<yui:YuiApplication
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:yui="http://akabana.seasar.org/yui/mxml"
	xmlns:view="view.*"
	xmlns:logic="logic.*"
	layout="absolute">
	
    <view:HelloView id="helloView"/>
    <logic:HelloViewLogic id="helloViewLogic"/>

</yui:YuiApplication>

view/HelloView.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
	<mx:VBox>
		<mx:FormItem label="メッセージ" required="true">
			<mx:TextInput id="message"/>
		</mx:FormItem>
		<mx:Button label="click me!" id="clickMe"/>
	</mx:VBox>

	<mx:StringValidator id="messageValidator" required="true" source="{message}" property="text" requiredFieldError="メッセージを入れてください。"/>
</mx:Canvas>

logic/HelloViewLogic.as

package logic {
	
	import flash.events.*;
	import mx.controls.*;
	
	import view.*;
	import dto.*;
	
	public class HelloViewLogic {
		
		[View]
		public var helloView:HelloView;
		
		[Model(bindView="helloView")]
		public var helloViewDto:HelloViewDto; 
		
		public function clickMeClickHandler(event:MouseEvent):void {
			if (helloViewDto.message == "") {
				return;
			}
			Alert.show(helloViewDto.message);
		}
	}
}

dto/HelloViewDto.as

package dto {
	
	[Bindable]
	public class HelloViewDto {
        public var message:String = "Hello World!";
    }
}


これを実行すると前回までと同様の結果が表示されます。