リッチ・クライアント・アプリケーション・プラグインの定義の最初の部分は、これまで学習してきた他のプラグインと同様です。ただし、MANIFEST.MF ファイルでは、必要なプラグインのリストがこれまで使用したものに比べてかなり小さい点が異なります。
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.ui.examples.rcp.browser; singleton:=true Bundle-Version: 3.2.0.qualifier Bundle-ClassPath: browser.jar Bundle-Activator: org.eclipse.ui.examples.rcp.browser.BrowserPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin Require-Bundle: org.eclipse.core.runtime, org.eclipse.uiEclipse-AutoStart: true Eclipse-AutoStart-comment: Use Eclipse-AutoStart instead of Eclipse-LazyStart because the browser example should run against 3.1 as well as 3.2.
ここまでで、ワークベンチに要素を追加する拡張を宣言して、プラットフォーム・ワークベンチに機能を組み込みました。これまでに検討してきた plugin.xml のすべてのコンテンツでは、存在していることが前提となっている個々のワークベンチへ追加する方法を学習してきました。リッチ・クライアント・プラットフォームの場合、定義済みのアプリケーションはありません。リッチ・クライアント・プラグインのみが、プラットフォームの開始時に実行される必要があるクラスを指定します。これは org.eclipse.core.runtime.applications 拡張で実行されます。
<extension point="org.eclipse.core.runtime.applications" id="app" name="%appName"> <application> <run class="org.eclipse.ui.examples.rcp.browser.BrowserApp"> </run> </application> </extension>
この拡張では、プラットフォームが最初に開始されたときに実行される必要があるクラスを指定します。このクラスは、実行メソッドをインプリメントする必要があることを示す IPlatformRunnable をインプリメントする必要があります。実行メソッドは、 SWT 表示を作成し、ワークベンチを始動する必要があります。クラス PlatformUI は、これらのタスクを実行する便利なメソッドをインプリメントします。
public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay(); try { int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); // exit the application with an appropriate return code return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK; } finally { if (display != null) display.dispose(); } }
createAndRunWorkbench を呼び出しても、ワークベンチが閉じるまで戻されません。 SWT イベント・ループおよびその他の低レベル・ロジスティクスは、このメソッド内で処理されます。この段階では、SWT アプリケーションの実行の基本的な仕組みを理解することは、あまり重要ではありません。このコードを多少変更して、ご使用のリッチ・クライアント・アプリケーションにコピーできます。独自の機能を追加するフックは、WorkbenchAdvisor です。このフックは、ワークベンチが作成されたときに引数として渡されます。詳しく見てみましょう。