Top/Eclipse/プラグイン開発のTIPS集/FormEditor

FormEditor (org.eclipse.ui.forms.editor.FormEditor)はEclipseプラグインのマニフェストエディタのような外観のエディタを作成するためのクラスです。Eclipse Formsを使って実装されています。これを使うことで

ようなエディタを作成することができます。

クラス構成

まずFormEditor は org.eclipse.ui.part.MultiPageEditorPart を継承しています。なので、FormEditor自体は複数のエディタ(やウィジェット)のまとまりと考えることができます。

通常のMultiPageEditorPart

protected void createPages();

メソッドをオーバーライドし、各エディタ(やウィジェット)を

editor = new MyEditor();
int index = addPage(editor, getEditorInput());
setPageText(index, editor.getTitle());

としたり、

Composite composite = new Composite(getContainer(), SWT.NONE);
FillLayout layout = new FillLayout();
composite.setLayout(layout);
text = new StyledText(composite, SWT.H_SCROLL | SWT.V_SCROLL);
text.setEditable(false);
int index = addPage(composite);
setPageText(index, "Preview");

などとしていきます。ようするにEditorやCompositeを各ページに追加していくような手順をとります。

それに対してFormEditor は、同じく

protected void createPages();

ないで

addPage(new HogePage());

と追加していくのですが、登録するクラスが org.eclipse.ui.forms.editor.IFormPageの実装クラスとなっています。このIFormPageがEclipse Formsを用いてエディタを作るための起点のインタフェースとなっています。

TextEditorを追加したい

FormEditorはMultiPageEditorPart なので、簡単にテキストエディタのページ(plugin.xmlのソースxmlを見るページ)を追加できると思ったけど、なぜかエラーが発生してできませんでした。http://www.koders.com/ でいろいろ探した結果、

SourceEditorPageBridge extends TextEditor implements IFormPage

をつくって FormEditor#addPagesないで

SourceEditorPageBridge sourcePage = new SourceEditorPageBridge(this);
sourcePage.setInput(this.getEditorInput());

としました。

まとめると

まとめるとクラス構成はだいたいこんな感じになっています

FormEditor(の実装クラス) 1 -> N FormPage(の実装クラス)
1 -> 1 MasterDetailsBlock(の実装クラス) 1 -> N  ItemDetailsPage(の実装クラス)

で、FormEditor -> FormPage

FormEditor#addPages(); と
FormEditor#addPage(IEditorPart, IEditorInput);
FormEditor#addPage(new ItemPage(this));

で関連づけられます。

FormPageMasterDetailsBlock

FormPage#createFormContent(IManagedForm)

ないでMasterDetailsBlock#createContent(managedForm)を呼ぶことで処理が委譲されます。

さらにMasterDetailsBlockItemDetailsPage

MasterDetailsBlock#registerPages(DetailsPart)

ないで detailsPart.registerPage(Hoge.class, new HogeDetailsPage())を呼ぶことで、詳細画面が登録されます。


この記事は

選択肢 投票
おもしろかった 16  
そうでもない 0  
Top/Eclipse/プラグイン開発のTIPS集/FormEditor

現在のアクセス:18112


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-07-15 (水) 00:03:23