エディタの拡張

はじめに今回は、プラグインのメインの機能として動作するエディタを拡張する方法について説明します。エディタのプラグインは、エディタを開いたときに表示されるメニューやツールバーの動作(アクション)を追加できます。図1:ワークベンチ・ウィンドウ(画像をクリックすると別ウィンドウに拡大図を表示します)エデ

大森 洋行

2005年8月15日 20:00

はじめに

今回は、プラグインのメインの機能として動作するエディタを拡張する方法について説明します。エディタのプラグインは、エディタを開いたときに表示されるメニューやツールバーの動作(アクション)を追加できます。

ワークベンチ・ウィンドウ
図1:ワークベンチ・ウィンドウ
(画像をクリックすると別ウィンドウに拡大図を表示します)

エディタの追加

それでは以下の手順で、本連載の第5回で作成した「Hello2プラグイン」に「Hello,Eclipse world」と表示されるエディタ(図2)を追加しましょう。


実行例
図2:実行例
(画像をクリックすると別ウィンドウに拡大図を表示します)

 

はじめにマニフェスト・エディターの「拡張」ページを表示し、「追加」ボタンをクリックして、「新規拡張」ウィザードを起動します。次に拡張ポイント"org.eclipse.ui.editors"を選択し、「新規拡張」ウィザードを終了します。

"editor"のプロパティ設定

"org.eclipse.ui.editors"を右クリックします。表示されたポップアップ・メニューから「新規」-「editor」を選択し、"editor"のプロパティを以下のように設定し、保管します。


プロパティ値
内容
idexamples.hello2.editors.SampleEditor
エディタを識別するID
nameサンプル・エディター
名前
iconicons/sample.gif
アイコンのパス
extensionstxt
エディタによって認識されているファイルの拡張子のリスト(コンマ区切り)
classexamples.hello2.editors.SampleEditor
org.eclipse.ui.IEditorPartを実装するクラス(エディタ・クラス)の名前。
このプロパティが指定された場合は、contributorClassプロパティも指定しなければいけません
command値:なし
外部エディタを起動するために実行するコマンド
launcher値:なし
org.eclipse.ui.IEditorLauncherを実装するクラスの名前
contributorClassexamples.hello2.editors.SampleEditorContributor
org.eclipse.ui.IEditorActionBarContributorを実装するクラス(エディタ・コントリビュータ・クラス)の名前。
ワークベンチのメニューおよびツールバーにアクションを追加するために使用します
default値:なし
trueの場合、このエディタがextensionsプロパティで指定したファイルのデフォルト・エディタとして使用されます
filenames値:なし
エディタによって認識されているファイル名のリスト
symbolicFontName値:なし
フォントのシンボル名

クラスを作成しエディタを追加

「概要」ページの「すべての拡張」から「org.eclipse.ui.editors」-「サンプル・エディター」を選択し、「拡張エレメント詳細」の「class」リンクをクリックして、examples.hello2.editors.SampleEditorクラスを作成します。

SampleEditorクラスに以下のようにコードを記述します。
 

public class SampleEditor extends EditorPart {

    public SampleEditor() {
        super();
    }

    public void doSave(IProgressMonitor monitor) {
    }

    public void doSaveAs() {
    }

    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
        setSite(site);
        setInput(input);
    }

    public boolean isDirty() {
        return false;
    }

    public boolean isSaveAsAllowed() {
        return false;
    }

    public void createPartControl(Composite parent) {
        Label label = new Label(parent, SWT.NONE);
        label.setText("Hello, Eclipse world");
    }

    public void setFocus() {
    }

}
SampleEditorクラスのスーパークラスであるorg.eclipse.ui.part.EditorPartクラスは、IEditorPartインターフェースをインプリメントしています。

次に「概要」ページの「すべての拡張」から「org.eclipse.ui.editors」-「サンプル・エディター」を選択し、「拡張エレメント詳細」の「contributorClass」リンクをクリックして、 examples.hello2.editors.SampleEditorContributorクラスを作成します。

public class SampleEditorContributor extends EditorActionBarContributor {

    public SampleEditorContributor() {
        super();
    }

}
SampleEditorContributorクラスのスーパークラスである org.eclipse.ui.part.EditorActionBarContributorクラスは、 IEditorActionBarContributorインターフェースをインプリメントしています。

以上でエディタを追加することができました。ワークベンチ・ランタイムを起動し、本連載の第5回で作成したhello.txtファイルを「サンプル・エディター」で開いてみてください(図2)。

ここまでは、エディタを追加する手順について説明しました。次に拡張ポイントとエディタ・クラス、エディタ・コントリビュータ・クラスについて説明します。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30