マルチページ書式エディター

UI 書式では、ビルド可能なマルチページ・エディターの基本的なサポートを提供しています。

FormEditor を拡張することによって、UI 書式のマルチページ・エディターのビルドを開始する必要があります。

public class SimpleFormEditor extends FormEditor {

	public SimpleFormEditor() {
	}

	protected FormToolkit createToolkit(Display display) {
		// エディター間で色を共用するツールキットを作成
します。
		return new FormToolkit(ExamplesPlugin.getDefault().getFormColors(
				display));
	}

	protected void addPages() {
		try {
		addPage(new FreeFormPage(this));
		addPage(new SecondPage(this));
		addPage(new ThirdPage(this));
		addPage(new MasterDetailsPage(this));
		addPage(new PageWithSubPages(this));
		}
		catch (PartInitException e) {
			//
		}
	}

	public void doSave(IProgressMonitor monitor) {
	}

	public void doSaveAs() {
	}

	public boolean isSaveAsAllowed() {
            return false;
	}

開始する非常に簡単な方法は、上記のように、ページを作成して追加することです。各ページは、FormPage をインプリメントして、createFormContent(IManagedForm managedForm) メソッドを上書きする必要があります。明らかに、ページにはすでに作成された管理対象の書式があり、囲まれた書式でコンテンツを作成し、また、管理対象のライフ・サイクルの一部として必要な書式パーツを登録する必要があります。

書式のページだけでなく、1 つ以上のテキスト・エディターを、代替の未加工のソースとして GUI ページに追加することができます。このためには、「addPage(IEditorPart, IEditorInput input)」メソッドをスーパークラスで呼び出す必要があります。

Eclipse フォームのマルチページ・エディターで推奨される方法

書式ベースのマルチページ・エディターを記述するには、多くの方法があります。基本的に、編集しているコンテンツのタイプ、およびユーザーの習熟度によって異なります。 2 つの方法を利用して、対処することができます。

  1. 典型的なユーザーがエディターをあまり使用しない、未加工のソースを手動で編集するのが大変または複雑である、ユーザーが技術的に熟練していないなどの場合、未加工のソースを参照しなくてもよいように、コンテンツのあらゆる面を完全に編集できる、完全なページを作成する必要がある。この方法では、ソース・ページは定期的には参照せず、時折検証するだけです。この点では、基本的なテキスト・エディターだけで済ませることができます。PDE 拡張ポイント・スキーマ・エディターは、このグループに当てはまります。

  2. ユーザーが技術的に熟練しており、手動でファイルを編集するのに問題がないが、支援を必要とすることがある場合はインクリメンタル・アウトライン、コンテキスト支援、構文の強調表示などのアドオンをすべて組み合わせた、優れたソース・エディターを作成することを考慮する。次に、ソースからでは達成するのが難しい複雑な書式のページには、付加価値機能を追加します。付加価値がわずかなものであったり、議論の余地があるものであった場合、熟練したユーザーをソース編集から切り替えさせることは難しいことが経験からはっきりしています。ただし、GUI ページでのみ使用可能で、非常に高品質な機能は、すぐに使用されます。

GUI とソース・ページが混合した、高品質なマルチページ・エディターの作成には、困難があります。ユーザーがページを頻繁に切り替えることを受け入れる場合、基本コンテンツの優れたモデルが必要です。モデルは、基本文書と直接結合され、ユーザーがテキストに直接入力した場合、および GUI ページを使用して構造的に変更した場合の両方で、同期する必要があります (エディターが依然として作動中の場合は、他のワークベンチ・アクションによって発生する間接的な変更も忘れないでください)。