1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Eclipseプラグイン開発:右クリックしたときのポップアップメニューへ自作機能追加

Last updated at Posted at 2021-09-17

目次

1.はじめに
2.目的
3.注意点
4.開発環境
5.依存関係
6.拡張
7.拡張要素詳細
8.終わり
9.参考サイト

はじめに

  • 大学の卒業研究でEclipseのプラグインを作成した際に調べたことを書き残した記事です
  • 自分と同じく研究のツールとしてプラグインを利用したい人や、自身の開発環境をよくするためにオリジナルのコマンドを作りたいという人に役立つ記事になればと思います
  • 文章を読み飛ばして画像だけ見た方が直感的でわかりやすいかもしれません

目的

  • 独自のコマンドやアクションをポップアップメニューに追加すること

実装後の画面は以下のようになります
Qiita:Sample2をクリックすると自作の機能が使えるイメージです

完成品.png

注意点

  • Eclipseのダウンロードやプラグインプロジェクトの作成方法については記述しません
  • 参考サイトにリンクをはっておきますのでそちらをご覧ください

開発環境

  • Windows10 Home
  • Eclipse Photon
  • Java 1.8
  • プロジェクト名 Sample

依存関係

Eclipseのプラグインを開発していくには依存関係を知ることが重要です
依存関係とは自作プラグインの拡張元のプラグインのことを指します
本記事の目的はアクションの追加を行うことなので以下の依存関係を plugin.xml->依存関係 に追加します

  • org.eclipse.ui

拡張

依存関係を追加したらプラグインの拡張を行っていきます plugin.xml->拡張
依存関係でorg.eclipse.uiを追加したのでそこから以下の3つを拡張していきます

org.eclipse.ui.menus

  • menus:右クリックを押したときのポップアップを拡張するのに必要

org.eclipse.ui.commands

  • commands:何かしらの操作(ボタン操作やショートカットキー)などによって呼びされる動作を拡張する

org.eclipse.ui.handlers

  • handlers:対応するコマンドの具体的な処理をHandlerクラスとして対応付けを行う

拡張要素詳細

plugin.xml->拡張タブの右側、拡張要素詳細について3つの拡張ポイントを個別に説明

org.eclipse.ui.menus

org.eclipse.ui.menusにマウスを合わせ右クリック->新規->menuContribution
menuContributionのlocationURIの欄にpopup:org.eclipse.ui.popup.any?after=copyを入力、他の欄はそのまま
最初のlocationURI.png

org.eclipse.ui.menusの後に段でpopup:org.eclipse.ui.popup.any?after=copy(menuContribution)ができるはずなので
マウスを合わせ右クリック->新規->menu を押すとlabel(menu)が生成される
label(menu)の要素詳細にあるlabel
*:に入力した文字は右クリックしたときのコピーとか切り取りの欄に表示される文字です
ほかの欄は使いません
menus.png

次に、もう1つmenuContributionを生成します。新しく作ったmenuContributionのlocationURIには
popup:先ほど作ったmunuのID?after=additions を入力 例)popup:Sample.popuup.menu?after=additions
2個目のlocationURI.png

新しく作ったmenuContributionを右クリック->commandをクリックしてcommandを生成
commandIDにはorg.eclipse.ui.commandsで作るcommandのIDを入力します
label:menuで入力したlabelの後にでてくる表示名になります。目的のところで見せた実装画面のQiita.Samplse2の箇所
id:プロジェクト名.pupup.自由
menus.command..png

org.eclipse.ui.commands

org.eclipse.ui.commandsを右クリック->category をクリックし生成されたものに**id*:**を割り振ります
id:プロジェクト名.カテゴリー名が一般的な命名規則だそうです 例)Sample.category1
*name:**に関しては右クリックのポップアップでは関係ないので飛ばします

次にorg.eclipse.ui.commandsを右クリック->command でcommandを生成します
id:プロジェクト名.command.自由   
name:自分でわかりやすいコマンド名を付けます
categoryId:は重要です、先で作ったcategoryのIdと同じものを欄に記入してください
参照ボタンからcategoryIdを記入すれば入力ミスはなくなるので便利です
以下のようにcategoryIdがあっていれば大丈夫です
commandsの上.png

commands.png

org.eclipse.ui.handlers

org.eclipse.ui.handlersを右クリック->handler をクリックしhandler生成します
handlerのcommandIdにはorg.eclipse.ui.commandsで作ったcommandのIdを入れます
次にclass:をクリックしhandlerクラスを作ります
注意することは、handler専用パッケージを作りIHandlerをimplementsすることです
ボタンが押されたときの具体的な処理はexecuteメソッドに書きます
※isEnabled と isHandledメソッドのfalseはtrue
に変えておかないとクリックしても反応しないので注意

Handler.png

SampleHandler.java
package handler;

import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.core.commands.IHandlerListener;

public class SampleHndler implements IHandler {

	@Override
	public void addHandlerListener(IHandlerListener handlerListener) {
		// TODO 自動生成されたメソッド・スタブ
	}
	@Override
	public void dispose() {
		// TODO 自動生成されたメソッド・スタブ
	}
	@Override
	public Object execute(ExecutionEvent event) throws ExecutionException {
		// TODO 自動生成されたメソッド・スタブ
        //クリックされたときの具体的な処理を記述
		return null;
	}
	@Override
	public boolean isEnabled() {
		// TODO 自動生成されたメソッド・スタブ
		return true;
	}
	@Override
	public boolean isHandled() {
		// TODO 自動生成されたメソッド・スタブ
		return true;
	}
	@Override
	public void removeHandlerListener(IHandlerListener handlerListener) {
		// TODO 自動生成されたメソッド・スタブ
	}

}

終わり

以上で右クリックしたときに出るポップアップにコマンドを追加する方法は終わりです
初めて記事を書いたので文章がおかしいと思いますがわからないことがあったら連絡してください
反応があったらもしくは暇だったら、ツールバーへボタンを用いたアクション追加の仕方を記事にしたいと思います
ありがとうございました

参考サイト

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?