プラグインで標準のダイアログでは単純すぎる場合、 Dialog クラスを使用して、 独自のダイアログを構成することができます。 以前に、readme ツールが、アクション・セットの「Readme ブラウザーを開く」アクションを どのように提供するか説明しました。 このアクション・セットは、ワークベンチ・ツールバーと、 「ウィンドウ」->「Readme ファイル・エディター」メニューに表示されます。
したがって、いつでも readme ツールの WindowActionDelegate で このアクションの実装を見ることができます。
public void run(IAction action) { SectionsDialog dialog = new SectionsDialog(window.getShell(), ReadmeModelFactory.getInstance().getSections(selection)); dialog.open(); }
アクション・セットに対するウィンドウ・アクションの代行者は、 リソース・ナビゲーター・ビューの現在の選択 (.readme ファイル) を使用して、 readme ファイル内のセクションのリストを取得します。 このリストとワークベンチ・ウィンドウのシェルが、SectionsDialog に渡されます。
ユーザーがこのアクションを選択すると、SectionsDialog が開きます。
SectionsDialog は、 org.eclipse.jface.dialogs パッケージ内の Dialog クラスをサブクラス化することにより、 readme ツール・プラグインに実装されています。
Dialog クラスは、 ダイアログのシェル・ウィンドウを作成するための基本サポートを提供しており、 共通のダイアログ・ボタンを作成し、ダイアログを起動します。 サブクラスは、ダイアログ自体の内容を処理します。
SectionsDialog は、セクションのリストを表示するための SWT リストを作成します。 JFace ビューアーを使用してリストを取り込みます。 (JFace ビューアーについては「ビューアー」で説明します。) ボタン作成はスーパークラスが行うため、このダイアログでは、ダイアログ用のボタンを作成する必要がありません。
protected Control createDialogArea(Composite parent) { Composite composite = (Composite)super.createDialogArea(parent); List list = new List(composite, SWT.BORDER); ... ListViewer viewer = new ListViewer(list); ... return composite; }
protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(MessageUtil.getString("Readme Sections")); ... }
ダイアログは、必要に応じて、単純にすることも、複雑にすることもできます。 ダイアログを実装する場合は、そのダイアログのコードのほとんどは、 その内容領域を表す SWT コントロールの作成と、ダイアログが表示されている間に必要なイベントの処理に関連しています。 ユーザーがボタンを押すと、ダイアログを構成している各種コントロール (またはビューアー) の状態を照会して、ダイアログは、 何をすべきかを決定します。