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を用いてエディタを作るための起点のインタフェースとなっています。
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())を呼ぶことで、詳細画面が登録されます。
この記事は
現在のアクセス:18112