ウィザードの遷移を制御する
次にこのウィザードを拡張して、複数のページを持つウィザードを作成してみますが、その前にウィザードのページ遷移の制御についても触れておきましょう。ウィザードの下部には[前へ][次へ][終了][キャンセル]の4つのボタンがあり、addPage()メソッドで追加された順に遷移するわけですが、このうち、[次へ]と[終了]ボタンについては、ウィザードページの入力内容に不備がある場合は[次へ]を無効に、ウィザード全体の入力内容に一部でも不足がありウィザードを完了できない場合は[終了]をそれぞれ無効にするよう実装すべきです。
[次へ]ボタンはウィザードページのisPageComplete()メソッドがtrueを返す場合有効に、falseを返す場合は無効になります。ウィザードページを実装する際はウィジェットにリスナを追加しておき、変更イベントを検知して入力チェックを行うべきです。入力内容に問題がある場合は以下のようにしてエラーメッセージのセットを行い、isPageCompleteプロパティにfalseをセットします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
[終了]ボタンに関してはウィザードのcanFinish()メソッドがtrueの場合有効に、falseの場合無効になります。canFinish()メソッドのデフォルトの実装はすべてのウィザードページのcanPageComplete()メソッドがtrueを返す場合true、1つでもfalseを返す場合はfalse となるよう実装されています。
複数のページを持つウィザードの実装
ではいよいよ複数のウィザードページを持つウィザードの実装に取り掛かります。最初に作成したウィザードはファイル名を入力するとXML宣言を含んだファイルを生成してくれるだけでしたが、さすがにこれではウィザードのありがたみがあまりありません。ウィザードページを1つ追加して、DTDを基にXML ファイルのひな型を生成できるようにしてみましょう。DTDのパースにはhttp://www.wutka.com/dtdparser.htmlで公開されているDTDParser というライブラリを使用することにします。Webサイトからdtdparser-1.21.zip をダウンロードし、アーカイブに含まれているdtdparser121.jarをプラグインプロジェクトのクラスパスに追加します。また、マニフェストエディタの[ランタイム]タブおよび[ビルド]タブにも追加しておきます。
今回はWizardPageを直接継承してユーザー・インターフェイスも自前で実装していきます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これに伴って最初に作成したXMLNewWizardPageを以下のように修正します(追加した部分を赤字で示しています)。DTD情報入力ページで入力された情報を受け取るためのフィールドおよびセッターメソッドを追加し、getInitialContents()メソッド内で作成するファイルの内容を修正しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最後に作成したウィザードページをウィザードに追加しましょう。XMLNewWizard を以下のように修正します(追加した部分を赤字で示しています)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以上で実装は完了です。ランタイムワークベンチを起動し、先ほどと同様、XMLファイルの作成ウィザードを起動してみてください。以下のようなウィザードページが追加されていることと思います。
このウィザードを実行することで、以下のXMLが生成されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
おわりに
今回作成したウィザードのソースコードはここからダウンロードすることができます。ウィザードは単純にファイルやプロジェクトを作成するだけでなく、関連する複数のファイルを一度に作成したり、ライブラリをプロジェクトにクラスパスに追加する、といった利用法も考えられます。またEclipseRCPによるリッチクライアント・アプリケーションにおいても情報の入力などに使用することができるでしょう。ぜひ、ウィザードを活用してプラグインやRCPアプリケーションの開発に役立ててください。
Copyright © ITmedia, Inc. All Rights Reserved.