Eclipseプラグインを作ってみよう!

第6回 画面の作成(1)

この記事を読むのに必要な時間:およそ 3.5 分

前回は実際にPDE(Plug-in Development Environment)のソースコードを読んで,マニフェストエディターがMaster/Detailsパターンで実装されていることがわかりました。今回からマニフェストエディターの実装を参考にしながら,フォームデザイナーの画面を作っていきます。

マニフェストエディターのクラスと画面の関係

最初にマニフェストエディターのクラスと画面の関係をまとめて,各クラスが画面のどの部分を担当しているいかを見てみましょう。

マニフェストエディターのクラスと画像の関係

マニフェストエディターのクラスと画像の関係

まずエディターとしてManifestEditorクラスがあります。ManifestEditorクラスは複数のページを持っており,その中のひとつのページである「拡張」ページをExtensionsPageクラスが管理しています。ExtensionsPageクラスはMasterDetailsBlockクラスを継承したExtensionsBlockクラスをコンテンツとして生成します。ExtensionsBlockクラスはMaster(一覧)を担当するExtensionsSectionクラス, Details(詳細)を担当するExtensionDetailsクラスを生成・管理しています。

次にこれらのクラスの継承関係を参照し,Eclipse Formsのクラスで表してみましょう。

クラスと画面の関係

Eclipse Formsのクラスと画面の関係

クラスと画面の関係をまとめることで,各クラスが画面のどの部分を担当しているか,ご理解いただけると思います。これらのクラスをそれぞれ実装していけば、マニフェストエディターのような機能を実現することができそうです。第4回でFormEditorクラスを継承したFormDesignerEditorクラスを実装しましたので,残りのFormPage,MasterDetailsBlock,AbstractFormPartクラスをそれぞれ実装していくことにします。

FormPageクラスを継承したクラスの実装

まずFormPageクラスを継承したFieldsPageクラスを作成します。

FieldsPageクラスの作成

FieldsPageクラスの作成

FormPageクラスはデフォルト・コンストラクターを定義していないため,明示的にコンストラクターを定義する必要があります。ここではExtensionsPageクラスを参考に,FormEditorクラスを引数に持つコンストラクターを定義します。

FieldsPageクラスのコンストラクター

public FieldsPage(FormEditor editor) {
    super(editor, null, "フィールド");
}

FormPageクラスのコンストラクターが持つ引数は,それぞれeditor,id,titleです。editorは定義したコンストラクターの引数をそのまま渡します。次のidはページの識別子です。今のところ1ページしか作成する予定がないので,とりあえずnullを渡すことにします。最後にページタイトルをフィールドとします。

次にFieldsPageクラスをFormDesignerEditorクラスのページとして追加するために,FormDesignerEditorクラスのaddPages()メソッドを修正します。

FieldsPageクラスをFormDesignerEditorクラスのページとして追加する

protected void addPages() {
    try {
        addPage(new FieldsPage(this));
    } catch (PartInitException e) {
        e.printStackTrace();            
    }
}

ここまでできたら,実行してみましょう。無名クラスで実装したFormPageクラスを削除したのでHello World!は表示されなくなりましたが,ページのタイトルがコンストラクターで引数として渡したフィールドになっているのがわかります。

著者プロフィール

松藤秀治(まつふじひではる)

Piece Frameworkのプログラマー。担当はEclipseのプラグインとして開発されているPiece Frameworkの統合開発環境Piece_IDE。2007年5月に株式会社アイテマンを設立。

コメント

コメントの記入