« ファイルの作成 | トップページ | イメージの扱い方 »

2004.06.09

Pluginクラスの作成

Eclipseプラグインは,各プラグインの生成と破棄のタイミング(ライフサイクル)で何らかの処理を行うために,Pluginクラスを準備しておくことができる。各プラグインでは,Pluginクラスのサブクラスを作成しておき,プラグイン・マニフェストにそのクラス名を記載しておくことによって,Eclipseプラットフォームが自動的にPluginクラスのインスタンスを生成し,所定のメソッドを呼び出してくれる

  public class MyPlugin extends Plugin {
    public MyPlugin(IPluginDescriptor descriptor) {
      super(descriptor);
    }
    public void startup() throws CoreException {
      // プラグイン活性時に行いたい処理
    }
    public void shutdown() throws CoreException {
      // プラグイン非活性時に行いたい処理
    }
  }

プラグイン・マニフェストでは,plugin要素のclass属性にPluginクラス名を指定する。

  <?xml version="1.0" encoding="UTF-8"?>
  <plugin
      id="yoichiro.myPlugin"
      name="Yoichiro Plugin"
      version="1.0.0"
      class="yoichiro.myPlugin.MyPlugin">
    ...
  </plugin>

Pluginクラスの典型的な作りとして,自身のインスタンスを返却するクラスメソッドを準備するということがあげられる。Pluginオブジェクトは,結構いろんな箇所で使われることになる。代表的な例としては,プラグインのインストールされている場所を取得するために使ったりする。ソースコードはこんな感じ。

  public class MyPlugin extends Plugin {
    private static MyPlugin instance;
    public MyPlugin(IPluginDescriptor descriptor) {
      super(descriptor);
      instance = this;
    }
    public static MyPlugin getInstance() {
      return instance;
    }
  }

コンストラクタでインスタンスをフィールドに保持して,getInstanceメソッドで取得できるようにしている。これにより,プラグイン内の任意のクラスから,

  URL url = MyPlugin.getInstance().getDescriptor().getInstallURL();

で,プラグインがインストールされている場所を取得することができる。

インストール場所の取得以外にも,Pluginクラスは言わばコントローラ的役割(処理の起点)を持たせたりもするので,上記のようにgetInstanceメソッドでインスタンスを何処からでも取得できるようにしておくと非常に有効である。

|

« ファイルの作成 | トップページ | イメージの扱い方 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/738586

この記事へのトラックバック一覧です: Pluginクラスの作成:

« ファイルの作成 | トップページ | イメージの扱い方 »