ユーザー・インターフェースまたは他のフレームワークを使用しない、プレーンかつ古典的 "Hello World" が、 どのような外観を持つかは誰でも知っています。
public class HelloWorld { public static void main(String [] args) { System.out.println("Hello World"); } }
この古典的な標準は、Eclipse プラットフォームのコンテキストではどのようになるでしょうか? Hello World を自己完結型のプログラムとして考えるのではなく、それをプラットフォームの拡張として作り直します。 世界に対して "hello" とあいさつをしたいのですから、 そのあいさつを含めるようにワークベンチを拡張する方法を考える必要があります。
プラットフォームのユーザー・インターフェース・コンポーネントを掘り下げていくと、 ワークベンチの UI を拡張し、カスタマイズする方法を徹底的に検討することになります。 ここでは、最も単純な拡張の 1 つであるビューから始めることにしましょう。
ワークベンチ・ウィンドウは、さまざまなビジュアル・パーツを提供するフレームとして考えることができます。 これらのパーツは、ビューおよびエディターの 2 つの主なカテゴリーに分類されます。 エディターについては後で述べます。 ビューでは、ワークベンチ内でユーザーが作業しているオブジェクトについての情報が提供されます。 ビューは、多くの場合、ユーザーがワークベンチ内のさまざまなオブジェクトを選択するごとに、その内容を変更します。
hello world プラグインでは、ユーザーに "Hello World" というあいさつをするための独自のビューを インプリメントします。
パッケージ org.eclipse.ui とそのサブパッケージには、ワークベンチのユーザー・インターフェース (UI) API を定義しているパブリック・インターフェースが含まれています。 これらのインターフェースの多くはデフォルトのインプリメンテーション・クラスを持っており、 それを拡張してシステムに簡単な変更を加えることができます。 この hello world の例では、hello とあいさつするラベルを提供するようにワークベンチ・ビューを拡張します。
関係するインターフェースは、IViewPart です。 これは、ビューをワークベンチに追加するようにインプリメントしなければならないメソッドを定義しています。 クラス ViewPart は、 このインターフェースのデフォルトのインプリメンテーションを提供しています。 つまり、ビューを表示するために必要なウィジェットは、ビュー・パーツが作成します。
ワークベンチ内の標準のビューは、多くの場合、 ユーザーが選択したオブジェクト、またはナビゲートされているオブジェクトに関する情報を表示します。 ビューは、ワークベンチで発生したアクションに基づき、その内容を更新します。 今回の場合は、単に hello とあいさつするだけなので、ビューはきわめて簡単になります。
どのような Java IDE Eclipse を使用してもプラグインはビルドできますが、ここでは Eclipse Java IDE を使用してプラグインをビルドする手順を紹介していきます。 まだ Eclipse ワークベンチと Java IDE についてよく知らない方は、紹介する手順の詳細について、 「Java 開発ユーザー・ガイド」を参照してください。 ここでは、ツールではなく、コードに焦点を当てます。 ただし、入門用にいくつかの IDE ロジスティクスがあります。
クリーンな環境で操作を始める場合、コードがプラグイン org.eclipse.ui へのアクセス権を持っていることを確認しなければなりません。 以下のステップに従って、このプラグイン、および必要となるプラグインをランタイム・ワークベンチ・インスタンスにインポートします。 これらのプラグインがすでにワークベンチ・インスタンスにある場合、セクション「プラグイン・プロジェクトの作成」に進んでください。
ホストおよびランタイム・ワークベンチ・インスタンスのセットアップについて詳しくは、PDE ガイドを参照してください。
これで、コードについて学習する準備ができました。 以下は、HelloWorldView に必要なもののすべてです。 (以下のコンテンツを、作成したクラスにコピーすることができます。)
package org.eclipse.examples.helloworld; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.ui.part.ViewPart; public class HelloWorldView extends ViewPart { Label label; public HelloWorldView() { } public void createPartControl(Composite parent) { label = new Label(parent, SWT.WRAP); label.setText("Hello World"); } public void setFocus() { // set focus to my widget. For a label, this doesn't // make much sense, but for more complex sets of widgets // you would decide which one gets the focus. } }
ビュー・パーツは、createPartControl メソッドでそのビュー・パーツを表すウィジェットを作成します。 この例では、SWT ラベルを作成し、それに "Hello World" というテキストを設定します。
以上が必要なものです。 新規のクラスをコンパイルすることができますが、コードをコンパイルできるように .classpath が正しく設定されていることを確認することをお勧めします。
これで、ビューのコンパイルが終わりました。 新しいビューは次のようになっているはずです。
コードを実行し、このビューをワークベンチに追加する方法を紹介します。
プラットフォームに対して、ビューを追加することを知らせる必要があります。 これを行うには、org.eclipse.ui.views 拡張ポイントを拡張します。 プラグインのコードの配置場所、および追加する拡張を含む、プラグインを記述するマニフェスト・ファイル plugin.xml を提供することにより、拡張を登録します。
(さらに続ける場合は、この情報を、プロジェクトの作成時に生成された plugin.xml にコピーできます。)
<?xml version="1.0" ?> <plugin name="Hello World Example" id="org.eclipse.examples.helloworld" version="1.0"> <requires> <import plugin="org.eclipse.ui" /> </requires> <runtime> <library name="helloworld.jar" /> </runtime> <extension point="org.eclipse.ui.views"> <category id="org.eclipse.examples.helloworld.hello" name="Hello" /> <view id="org.eclipse.examples.helloworld.helloworldview" name="Hello Greetings" category="org.eclipse.examples.helloworld.hello" class="org.eclipse.examples.helloworld.HelloWorldView" /> </extension> </plugin>
このファイルでは、このプラグインの 名前、ID、およびバージョンを定義します。
また、必須のプラグインもリストします。 プラグインではワークベンチと SWT API を使用するので、org.eclipse.ui をリストする必要があります。 また、実行可能コードがある場所も記述する必要があります。 コード helloworld.jar というパッケージにするので、ライブラリー名で登録します。
最後に、プラグインを追加する拡張ポイントを宣言します。 org.eclipse.ui.views 拡張は、いくつかの異なる構成パラメーターを持っています。 最初に、ビューの拡張に対してカテゴリー を宣言しています。 カテゴリーは、ワークベンチの「ビューの表示」ダイアログで、関連するビューを 1 つにグループ化するために使用することができます。 ここでは、カテゴリーが独自のグループで表示されるよう、"Hello" という独自のカテゴリーを定義しています。 この例のビューの、固有の ID を宣言し、ビューのインプリメンテーションを提供するクラスの名前を指定しています。 また、ビューの名前、"Hello Greetings" も指定しています。 この名前は、「ビュー表示」ダイアログと、ビューのタイトル・バーに表示されます。
プラグインのマニフェスト・ファイルには、多くの ID が使用されています。 それぞれの拡張ポイントは、多くの場合、ID (ビュー拡張ポイントに対して上記で使用されたカテゴリー ID など) を必要とする構成パラメーターを定義しています。 この例では、プラグイン ID も定義しています。 通常、インストールされているプラグインそれぞれの一意性を保証するために、すべての ID に Java パッケージ名を接頭部として使用する必要があります。
接頭部の後に使用する特定の名前は、ユーザーの任意です。 ただし、プラグイン ID の接頭部がパッケージの 1 つと全く同一の場合は、 そのパッケージ内のクラス名は使用しないようにしてください。 使用すると、ID 名を見ているのかクラス名を見ているのかを区別することができなくなります。
また、異なる拡張構成パラメーターには同じ ID を使用しないでください。 上記のマニフェストでは、共通の ID 接頭部 (org.eclipse.examples.helloworld) を使用しましたが、 ID はすべて固有です。 このようなネーミング・アプローチは、ファイルの読み取り、および関係する ID の確認に役立ちます。
これで、ビューをインプリメントし、プラグイン・マニフェストに contribution を宣言しました。 この後は、実行可能になるようにプラットフォームへプラグインをインストールする必要があります。