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));

で関連づけられます。

FormPage?MasterDetailsBlock?

FormPage#createFormContent(IManagedForm)

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

さらにMasterDetailsBlock?ItemDetailsPage?

MasterDetailsBlock#registerPages(DetailsPart)

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


この記事は

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

現在のアクセス:17238


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS