Top / Eclipse / プラグイン開発

JavaWorld?の2004年3月号に特集されていたので、Eclipseのプラグイン開発ツールを触ってみました。

Eclipseはこのプラグインの固まりで、すべての機能はプラグインで作成されているみたいです。ようするにEclipseを機能拡張したい場合はこのプラグインという作法に則って作成するわけですね。

まだ全然やり方がわかりません。とりあえずView(パースペクティブ内の一つのタイルのこと)を拡張して、選択しているファイルのファイル名を表示するプラグインを作成しています。

とりあえずやってみる

一番簡単なやり方は

後はすべてデフォルトでOKでよいです。ウィザードが完了すると、単純なプラグイン・プロジェクトの作成完了です。

基本的な構成はできたので、次はプラグインファイル(plugin.xml)の記述です。手順は

メニューやツールバーに機能を追加したい

メニューバーや、ツールバーにプラグインを表示させたいときは

org.eclipse.ui.actionSets

という拡張ポイントを使用します。 ウィザードでHello,Worldプラグインを選択すると、以下のようなplugin.xmlが出力されます。

<extension point="org.eclipse.ui.actionSets">
  <actionSet label="サンプル・アクション・セット"
    visible="true"
    id="nu.mine.kino.example.actionSet">
    <menu label="サンプル・メニュー(&amp;M)"
           id="sampleMenu">
      <separator name="sampleGroup"></separator>
    </menu>
    <action label="サンプル・アクション(&amp;S)"
      icon="icons/sample.gif"
      class="nu.mine.kino.example.actions.SampleAction"
      tooltip="Hello, Eclipse world"
      menubarPath="sampleMenu/sampleGroup"
      toolbarPath="sampleGroup"
      id="nu.mine.kino.example.actions.SampleAction">
    </action>
  </actionSet>
</extension>
01.png
<menu label="サンプル・メニュー(&amp;M)"
02.png
<action label="サンプル・アクション(&amp;S)"
03.png
04.png
<actionSet label="サンプル・アクション・セット"

外部のライブラリを使用する

プラグインディレクトリにlibディレクトリなどを作成しておいて、plugin.xmlで

<runtime>
  <library name="hoge.jar"/>
  <library name="lib/fuga.jar"/> <-外部ライブラリ
</runtime>

とすればOKです。

プラグインのディレクトリを取得する

Log4jの初期化のためにlog4j.xmlを読み込むなど、プラグインディレクトリのパスを取得する場面は結構ありますが、その方法です。

 String pluginDirectory = Platform
    .resolve(getDefault().getDescriptor().getInstallURL()).getPath();

で取得できます。 ちなみにLog4jの初期化などはAbstractUIPluginのサブクラス(勝手に作られるヤツ)で

public void startup() throws CoreException {
 super.startup();

 String pluginDirectory = null;
 try {
  pluginDirectory =
   Platform
    .resolve(getDefault().getDescriptor().getInstallURL())
    .getPath();
 } catch (IOException e) {
  e.printStackTrace();
 }

 DOMConfigurator.configure(new File(pluginDirectory, "lib/log4j.xml").toString());
}

などとstartup()をOverrideすればよいでしょうか。

ワークベンチ以下の関連

プラグイン開発で、いろいろなUIにアクセスしたいわけですが、それぞれのUIがどのような関連になっているのかをまとめてみました。

workbench_decomposed.gif

WorkBench?

ワークベンチ(ワークベンチ・ウィンドウ)とは、大ざっぱに言うと、「プラットフォームの始動時に開くウィンドウ」のことです。

ちなみに

IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();

で IWorkbenchWindow? の配列が取得できますが、この配列はEclipseで ウィンドウ >> 新規ウィンドウ で開いているウィンドウ数です。

Page

ワークベンチ・ウィンドウの内部には、パーツを含む 1 つのページがあります。ページは、パーツをグループ化するためのインプリメンテーション・メカニズムです。

どうも

WorkbenchWindow -> IWorkbenchPage -> IViewPart

となっているようだ。

System.out.println(window.getActivePage().getLabel());
// ワークベンチの取得
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();

//アクティブなエディタの取得
IEditorPart editor = window.getActivePage().getActiveEditor();
AbstractTextEditor aEditor = (AbstractTextEditor) editor;
//エディタ内のドキュメントを取得
IDocument document =
  aEditor.getDocumentProvider().getDocument(editor.getEditorInput());
document.addDocumentListener(this);

この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Eclipse / プラグイン開発

現在のアクセス:0


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS