Flex Doc TeamのblogにあるこのエントリーでFlash Builder の拡張についてのドキュメント公開のアナウンスがされていました。
Adobe MAX 2008のセッションで公開されていた、Code ModelとDesign Modelに加えて新たにDesign View Extensibility kitも公開されています。
Design View Extensibility kitはflex4用のサンプルプロジェクトも用意されています。デザインビューにも対応したコンポーネントを作成するのに参考になりそう。
あわせてデータ中心開発(DcD:Data-centric-Development)の拡張についてのドキュメントも公開されていました。
- Extending service support in Flash Builder
http://www.adobe.com/devnet/flex/flashbuilder_extensibility/DCDService/dcdservice.html
Flash Builder 4の新機能のひとつである、データ中心開発(DcD:Data-centric-Development)のServiceWizardはデフォルトで以下のサーバテクノロジーが用意されています。
- BlazeDS
- ColdFusion
- LCDS
- PHP
- Webサービス
- XML
このサービスを追加してWizardで選択できるようにする拡張ポイントに関するドキュメントです。
拡張するのに必要なクラスや作り方の概要とJavaDocで構成されているのですが、このドキュメント、昔に作成されて更新されていないようです。
クラスパスにつなげるjarファイルやDependenciesに設定するプラグインが現在リリースされているものとあっていません。
Beta1のころからドキュメント公開を望んでいたのですが、この分だとなかなか更新されそうもないので、独自で作り始めてみました。
まずはServiceWizardの一覧に表示されるまでのチュートリアルです。
環境の準備
Eclipseはplugin開発ができるPDE(Plugin Development Emvironment)が入っているものを用意してFlash Builder 4をpluginでインストールします。
以下のものを選択しました。
1.pluginプロジェクトの作成
次にプロジェクト作成ウィザードを起動してプラグインプロジェクトを作成します。
menuより、New ->Project ->Plug-in Development ->Plug-in Projectを選択して、Nextボタンをクリックします。
新規にプラグインプロジェクトを作成するウィザードが立ち上がるので以下のように設定します。
項目 | 設定値 |
---|---|
ProjectName | <作成するPlugin名称> |
Create a Java project | チェックする |
source folder | src |
Output folder | bin |
Eclipse version | 3.4 |
設定ができたらNextボタンをクリックします。
pluginのIDや名前などを指定する画面が表示されるのでExecution Enviromnentの設定を J2SE-1.5にして、名称やIDを適切に変更します。
項目 | 設定値 |
---|---|
ID | <作成するPlugin名称>と一緒 |
Version | 0.0.1 |
Name | <Plugin名称> |
Execution Environment | J2SE-1.5 |
Generation an activator, a Java class that controls the plug-in's life cycle | チェックする |
Activator | <Pluginとなるクラス名称> |
This plug-in will make contributions to the UI | チェックする |
Finishボタンをクリックすると、プロジェクトが作成されます。
2.Dependenciesの設定
プロジェクトが作成されたのち、META-INFフォルダ以下にあるMANIFEST.MFを開きます。
設定画面の2つ目にある、Dependenciesを開きます。ここでDCDServiceを拡張するのに必要なPlug-inを追加します。
Required Plug-insの設定でAdd...ボタンをクリックして以下のpluginを選択します。
org.eclipse.ui
org.eclipse.core.runtime
org.eclipse.core.resources
org.eclipse.core.filesystem
com.adobe.flexbuilder.project
com.adobe.flexbuilder.DCDService ※1
※1 Documentではcom.adobe.flexbuilder.dcradとなっている。
※DCDServiceは実行時には必要だが、開発中はbuild pathでエラーになってしまうので
※pluginのソースを書き換えてコンパイルするときには設定からはずしておく。
※コンパイル後、実行時に再度設定にいれます。Eclipse上ではエラーになるが実行するときには正常に動作するので問題ないです。
3.Extensionsの追加
Exntensionsタブを表示し、Add..をクリックしてcom.adobe.flexbuilder.DCDService.serviceImplementationを選択します。
追加された(servicewizard)を選択してclass名とservcertypeを指定します。class*のリンクをクリックするとそのクラス名にあったJavaClassを生成するWizardが立ち上がるのでそのままFinishボタンをクリックすると、必要なメソッドスタブを含んだ形で生成されます。
servertypeはDcDのサービス選択画面で表示されるサービスを振り分けるのに使われているようです。
4.クラスパスの追加
servicewizardをはじめ、DCDServiceを拡張する際に必要なクラスををまとめたjarファイル(dcdservice.jar)をクラスパスに追加します。
Dependenciesで追加したcom.adobe.flexbuilder.DCDServiceがビルド設定でエラーになってしまうのであらかじめはずして設定しておきます。
プロジェクトを選択して右クリック->Properties -> Java Build Path ->LibratiesでAdd External JARSをクリックして以下のファイルを選択します。
C:/Program Files/Adobe/Adobe Flash Builder 4 Plug-in/eclipse/plugins/com.adobe.flexbuilder.DCDService_4.0.0.272416/dcdservice.jar
※このパスはDocumentでは古いパスになっています。現在リリースされているFlash Builder 4ではjarファイルは上記のパスにあります。
5.ServieWizardの実装
3.Extensionsの追加で生成したServiceWizardクラスの#getServerType()とgetServerDescription()を実装します。スケルトンができているので説明とサーバタイプを文字列で返すようにします。getServerTypeで返している文字列がサーバテクノロジー選択時に表示される名前になり、getServerDescriptionで返している文字列が選択したときの説明表示になります。
今回は以下のようにしました。
/* (non-Javadoc)
* @see com.adobe.flexbuilder.DCDService.extensions.IServiceWizard#getServerDescription()
*/
public String getServerDescription() {
return "Description here.";
}
/* (non-Javadoc)
* @see com.adobe.flexbuilder.DCDService.extensions.IServiceWizard#getServerType()
*/
public String getServerType() {
return "MyService";
}
6.テスト実行
変更したコードをコンパイルするために、2.Dependenciesの設定で追加したcom.adobe.flexbuilder.DCDServiceを一度削除します。エラーがなくなりコンパイルされます。コンパイルができたらまた、com.adobe.flexbuilder.DCDServiceをDependenciesに追加します。
プロジェクトを選択してMenu->Run->Runを選択して実行します。エラーになっている確認が表示されますが、そのままProcceedを選択します。
新たにEclipseが起動されるので、Flexプロジェクトを新規に作成します。
作成できたら、プロジェクトを選択しデータとサービスビューで[データとサービスに接続...]をクリックするとサービスタイプを選択する画面が表示され、先ほど作成したMyServiceが一覧に表示されていることが確認できます。
コンパイル&実行毎にcom.adobe.flexbuilder.DCDServiceを追加したり削除したりしないといけないのがあっているのかよくわかりませんが、DcD拡張のPlug-in開発はできそうです。
次はロゴイメージを表示させてみたいと思います。
できれば、公開されているDCD Extensibilityのドキュメント
も更新されてサンプルプロジェクトなども公開されたらなーと思っています。そうすればもっとDcDの拡張プラグインが出てくると思いますし。
まずはリリースにあわせて記述を修正してEarly Accessからベータくらいになること希望...。誰に言えばいいのか....
以下リンク
--
#Flash Builder 4の拡張はここにドキュメントがあります。
Extending Adobe Flash Builder
http://www.adobe.com/devnet/flex/flashbuilder_extensibility
#今回作成したPluginのプロジェクト(と同様のもの)はこちらアップしてあります。
http://www.noridon.net/weblogs/labs/plugin/MyMyDcDserviceProjects0.0.0.1.zip
#コンパイルしてDeployできる形になったjarファイル。Flash Builder 4がインストールされているEclipseのpluginフォルダに配置するとService一覧に表示されるようになります。
http://www.noridon.net/weblogs/labs/plugin/MyMyDcDservice_0.0.0.1.jar
仕事が早い!