Eclipse/プラグイン開発のTIPS集/RCP(Eclipse3.4以降)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
#contents
**概要 [#o7544816]
:2010/01/17|注記
かつて Eclipse/プラグイン開発のTIPS集/RCP のページを書き...
Eclipseのプラグインを勉強しているついでに、Eclipse3.0で導...
前々からEclipseをベースにして、開発ツール(Rational Applic...
手順はプラグインを作るのと基本的に一緒です。ウィザードに...
-org.eclipse.equinox.app.IApplication の実装クラス(実際の...
-org.eclipse.ui.application.WorkbenchAdvisor のサブクラス...
-org.eclipse.ui.application.WorkbenchWindowAdvisor のサブ...
-org.eclipse.ui.application.ActionBarAdvisor のサブクラス...
-org.eclipse.ui.IPerspectiveFactory の実装クラス(パースペ...
などがあります。
**それぞれの役割 [#af4328a7]
***IApplication の実装クラス [#b94cc5a5]
IApplication の実装クラスはstartメソッドをオーバーライド...
public Object start(IApplicationContext context) throws ...
Display display = PlatformUI.createDisplay();
try {
int returnCode = PlatformUI.createAndRunWorkbench(di...
if (returnCode == PlatformUI.RETURN_RESTART)
return IApplication.EXIT_RESTART;
else
return IApplication.EXIT_OK;
} finally {
display.dispose();
}
}
***WorkbenchAdvisor のサブクラス [#q9c8adec]
RCPアプリケーションはパースペクティブを一つ以上持つのです...
private static final String PERSPECTIVE_ID = "nu.mine.ki...
public String getInitialWindowPerspectiveId() {
return PERSPECTIVE_ID;
}
***WorkbenchWindowAdvisor のサブクラス [#x3fdd5f4]
ワークベンチ(ウィンドウとか、外枠、みたいなイメージ)を構...
public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfi...
configurer.setInitialSize(new Point(400, 300));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
}
***IPerspectiveFactory の実装クラス [#a223583c]
RCPアプリケーションで使用するパースペクティブを構築します...
public void createInitialLayout(IPageLayout layout) {
layout.addView("nu.mine.kino.plugin.samples.rcp.view1"...
IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA);
}
("nu.mine.kino.plugin.samples.rcp.view1"というIDのビュー...
これらはだいたい初回のウィザードで自動生成されます。
**実際にやってみる。 [#a91800cf]
では実際にやってみましょう。まずは空っぽのアプリケーショ...
-新規 >> プラグイン・プロジェクト を選択。
-プロジェクト名に nu.mine.kino.plugin.samples.rcp と入れ...
#ref(01.png)
下記の通り入力して次へ
#ref(02.png)
サンプルのテンプレートに「Hello RCP」を選択して次へ
#ref(03.png)
最後に「Add branding」を選択して、終了。
#ref(04.png)
ウィザードに従って作成するだけで下記のようなplugin.xmlが...
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="nu.mine.kino.plugin.samples.rcp.Applicat...
</run>
</application>
</extension>
<extension
point="org.eclipse.ui.perspectives">
<perspective
name="RCP Perspective"
class="nu.mine.kino.plugin.samples.rcp.Perspective"
id="nu.mine.kino.plugin.samples.rcp.perspective">
</perspective>
</extension>
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
application="nu.mine.kino.plugin.samples.rcp.appli...
name="Hello RCP">
<property
name="windowImages"
value="icons/alt_window_16.gif,icons/alt_window...
</property>
</product>
</extension>
</plugin>
ここまで作成したRCPアプリケーションは以下よりダウンロード...
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
***いよいよ実行 [#t2852cf9]
いよいよ実行します。マニフェストエディタの「Launch an Ecl...
#ref(05.png)
何にもビューを配置していない空のアプリケーションが起動し...
#ref(06.png)
**ビューをパースペクティブに配置する [#e9041247]
次にビューを作成し、そのビューを先ほど自動生成されたパー...
***まずはビューを作成 [#mde49524]
まずはビューの定義です。プラグインのマニフェストエディタ...
#ref(07.png)
さらに エディタのorg.eclipse.ui.views を右クリックし、vie...
#ref(08.png)
マニフェストエディタにビューが追加されるので、エディタの...
#ref(09.png)
次にビュークラスを作成するのですが、上記の「class*:」をク...
***次にパースペクティブにビューを追加 [#ucda6805]
次に、既存のパースペクティブのクラス(nu.mine.kino.plugin....
public class Perspective implements IPerspectiveFactory {
public void createInitialLayout(IPageLayout layout) {
layout.setEditorAreaVisible(false);
layout.addView("nu.mine.kino.plugin.samples.rcp.view...
IPageLayout.LEFT, 0.5f, IPageLayout.ID_EDITOR_AR...
}
}
以上で完成です。またまたマニフェストエディタから「Launch ...
#ref(10.png)
ここまでのソースコードは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
**メニューバーを配置する [#x8e1e39a]
つづいてメニューバーを構成していきます。Eclipse/RCPには「...
***まずはプログラマティカルに [#v6d52973]
Eclipse/RCPのフレームワークでメニューバーを構築するのは「...
package nu.mine.kino.plugin.samples.rcp;
public class ApplicationActionBarAdvisor extends ActionB...
private IAction aboutAction;
private IAction quitAction;
public ApplicationActionBarAdvisor(IActionBarConfigure...
super(configurer);
}
protected void makeActions(IWorkbenchWindow window) {
{
aboutAction = ActionFactory.ABOUT.create(window);
register(aboutAction);
}
{
quitAction = ActionFactory.QUIT.create(window);
register(quitAction);
}
}
protected void fillMenuBar(IMenuManager menuBar) {
{
MenuManager menuManager = new MenuManager("&File",
IWorkbenchActionConstants.M_FILE);
menuBar.add(menuManager);
menuManager.add(quitAction);
}
menuBar.add(new GroupMarker(IWorkbenchActionConstant...
{
MenuManager menuManager = new MenuManager("&Help",
IWorkbenchActionConstants.M_HELP);
menuBar.add(menuManager);
menuManager.add(new Separator("group01"));
// ヘルプと、aboutの間にgroup01というグループを追加
menuManager.add(aboutAction);
}
}
}
上記のようなコーディングで、下記のようなメニュー構成が作...
[ワークベンチ]
|
|-[File] - "file" <- IWorkbenchActionCons...
| -[終了]
|
|-GroupMarker - "additions"
|
|-[Help] - "help" <- IWorkbenchActionCons...
| -[検索]
| -"セパレータ" - "group01"
| -[○○について] -
ファイルメニュー
#ref(menu01.png)
ヘルプメニュー
#ref(menu02.png)
間に、additionsというマーカーも追加されている
#ref(menu03.png)
「Launch an Eclipse application」で実行してみると、以下の...
#ref(menu04.png)
ここまでのソースコードは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
***additionsとかgroup01とかってなに? [#q7eb4992]
先のコーディングで、ファイルメニューとヘルプメニューの間...
menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB...
(IWorkbenchActionConstants.MB_ADDITIONSは定数値で、実際...
というコードでグループマーカーを追加しました。各メニュー...
詳細は[[メニューバーを構築する>Eclipse/プラグイン開発のTI...
**TIPS集 [#o74eb3bc]
***products拡張ポイントについて [#v89ca80d]
Eclipseのサイトに[[Branding your application:http://www.e...
さてorg.eclipse.core.runtime.applications 拡張ポイントで...
<extension id="product"
point="org.eclipse.core.runtime.products">
<product application="nu.mine.kino.plugin.samples.rcp....
<property name="windowImages"
value="icons/alt_window_16.gif,icons/alt_wi...
</property>
</product>
</extension>
あとはpropertyタグでさまざまなプロパティを設定することで...
**関連リンク [#e57061e3]
-[[ポップアップやメニューバーにアクションを追加するための...
-[[ワークベンチのメニューバーに、プログラマティカルにメニ...
-[[RCPをやってみる(Eclipse 3.4以前の記事)>Eclipse/プラグ...
-[[RCPの製品情報などの画面を追加する>Eclipse/プラグイン開...
-[[製品情報などで使用する、プロパティ値の一覧>Eclipse/プ...
----
この記事は
#vote(おもしろかった[10],そうでもない[0])
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
#contents
**概要 [#o7544816]
:2010/01/17|注記
かつて Eclipse/プラグイン開発のTIPS集/RCP のページを書き...
Eclipseのプラグインを勉強しているついでに、Eclipse3.0で導...
前々からEclipseをベースにして、開発ツール(Rational Applic...
手順はプラグインを作るのと基本的に一緒です。ウィザードに...
-org.eclipse.equinox.app.IApplication の実装クラス(実際の...
-org.eclipse.ui.application.WorkbenchAdvisor のサブクラス...
-org.eclipse.ui.application.WorkbenchWindowAdvisor のサブ...
-org.eclipse.ui.application.ActionBarAdvisor のサブクラス...
-org.eclipse.ui.IPerspectiveFactory の実装クラス(パースペ...
などがあります。
**それぞれの役割 [#af4328a7]
***IApplication の実装クラス [#b94cc5a5]
IApplication の実装クラスはstartメソッドをオーバーライド...
public Object start(IApplicationContext context) throws ...
Display display = PlatformUI.createDisplay();
try {
int returnCode = PlatformUI.createAndRunWorkbench(di...
if (returnCode == PlatformUI.RETURN_RESTART)
return IApplication.EXIT_RESTART;
else
return IApplication.EXIT_OK;
} finally {
display.dispose();
}
}
***WorkbenchAdvisor のサブクラス [#q9c8adec]
RCPアプリケーションはパースペクティブを一つ以上持つのです...
private static final String PERSPECTIVE_ID = "nu.mine.ki...
public String getInitialWindowPerspectiveId() {
return PERSPECTIVE_ID;
}
***WorkbenchWindowAdvisor のサブクラス [#x3fdd5f4]
ワークベンチ(ウィンドウとか、外枠、みたいなイメージ)を構...
public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfi...
configurer.setInitialSize(new Point(400, 300));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
}
***IPerspectiveFactory の実装クラス [#a223583c]
RCPアプリケーションで使用するパースペクティブを構築します...
public void createInitialLayout(IPageLayout layout) {
layout.addView("nu.mine.kino.plugin.samples.rcp.view1"...
IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA);
}
("nu.mine.kino.plugin.samples.rcp.view1"というIDのビュー...
これらはだいたい初回のウィザードで自動生成されます。
**実際にやってみる。 [#a91800cf]
では実際にやってみましょう。まずは空っぽのアプリケーショ...
-新規 >> プラグイン・プロジェクト を選択。
-プロジェクト名に nu.mine.kino.plugin.samples.rcp と入れ...
#ref(01.png)
下記の通り入力して次へ
#ref(02.png)
サンプルのテンプレートに「Hello RCP」を選択して次へ
#ref(03.png)
最後に「Add branding」を選択して、終了。
#ref(04.png)
ウィザードに従って作成するだけで下記のようなplugin.xmlが...
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="nu.mine.kino.plugin.samples.rcp.Applicat...
</run>
</application>
</extension>
<extension
point="org.eclipse.ui.perspectives">
<perspective
name="RCP Perspective"
class="nu.mine.kino.plugin.samples.rcp.Perspective"
id="nu.mine.kino.plugin.samples.rcp.perspective">
</perspective>
</extension>
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
application="nu.mine.kino.plugin.samples.rcp.appli...
name="Hello RCP">
<property
name="windowImages"
value="icons/alt_window_16.gif,icons/alt_window...
</property>
</product>
</extension>
</plugin>
ここまで作成したRCPアプリケーションは以下よりダウンロード...
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
***いよいよ実行 [#t2852cf9]
いよいよ実行します。マニフェストエディタの「Launch an Ecl...
#ref(05.png)
何にもビューを配置していない空のアプリケーションが起動し...
#ref(06.png)
**ビューをパースペクティブに配置する [#e9041247]
次にビューを作成し、そのビューを先ほど自動生成されたパー...
***まずはビューを作成 [#mde49524]
まずはビューの定義です。プラグインのマニフェストエディタ...
#ref(07.png)
さらに エディタのorg.eclipse.ui.views を右クリックし、vie...
#ref(08.png)
マニフェストエディタにビューが追加されるので、エディタの...
#ref(09.png)
次にビュークラスを作成するのですが、上記の「class*:」をク...
***次にパースペクティブにビューを追加 [#ucda6805]
次に、既存のパースペクティブのクラス(nu.mine.kino.plugin....
public class Perspective implements IPerspectiveFactory {
public void createInitialLayout(IPageLayout layout) {
layout.setEditorAreaVisible(false);
layout.addView("nu.mine.kino.plugin.samples.rcp.view...
IPageLayout.LEFT, 0.5f, IPageLayout.ID_EDITOR_AR...
}
}
以上で完成です。またまたマニフェストエディタから「Launch ...
#ref(10.png)
ここまでのソースコードは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
**メニューバーを配置する [#x8e1e39a]
つづいてメニューバーを構成していきます。Eclipse/RCPには「...
***まずはプログラマティカルに [#v6d52973]
Eclipse/RCPのフレームワークでメニューバーを構築するのは「...
package nu.mine.kino.plugin.samples.rcp;
public class ApplicationActionBarAdvisor extends ActionB...
private IAction aboutAction;
private IAction quitAction;
public ApplicationActionBarAdvisor(IActionBarConfigure...
super(configurer);
}
protected void makeActions(IWorkbenchWindow window) {
{
aboutAction = ActionFactory.ABOUT.create(window);
register(aboutAction);
}
{
quitAction = ActionFactory.QUIT.create(window);
register(quitAction);
}
}
protected void fillMenuBar(IMenuManager menuBar) {
{
MenuManager menuManager = new MenuManager("&File",
IWorkbenchActionConstants.M_FILE);
menuBar.add(menuManager);
menuManager.add(quitAction);
}
menuBar.add(new GroupMarker(IWorkbenchActionConstant...
{
MenuManager menuManager = new MenuManager("&Help",
IWorkbenchActionConstants.M_HELP);
menuBar.add(menuManager);
menuManager.add(new Separator("group01"));
// ヘルプと、aboutの間にgroup01というグループを追加
menuManager.add(aboutAction);
}
}
}
上記のようなコーディングで、下記のようなメニュー構成が作...
[ワークベンチ]
|
|-[File] - "file" <- IWorkbenchActionCons...
| -[終了]
|
|-GroupMarker - "additions"
|
|-[Help] - "help" <- IWorkbenchActionCons...
| -[検索]
| -"セパレータ" - "group01"
| -[○○について] -
ファイルメニュー
#ref(menu01.png)
ヘルプメニュー
#ref(menu02.png)
間に、additionsというマーカーも追加されている
#ref(menu03.png)
「Launch an Eclipse application」で実行してみると、以下の...
#ref(menu04.png)
ここまでのソースコードは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
***additionsとかgroup01とかってなに? [#q7eb4992]
先のコーディングで、ファイルメニューとヘルプメニューの間...
menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB...
(IWorkbenchActionConstants.MB_ADDITIONSは定数値で、実際...
というコードでグループマーカーを追加しました。各メニュー...
詳細は[[メニューバーを構築する>Eclipse/プラグイン開発のTI...
**TIPS集 [#o74eb3bc]
***products拡張ポイントについて [#v89ca80d]
Eclipseのサイトに[[Branding your application:http://www.e...
さてorg.eclipse.core.runtime.applications 拡張ポイントで...
<extension id="product"
point="org.eclipse.core.runtime.products">
<product application="nu.mine.kino.plugin.samples.rcp....
<property name="windowImages"
value="icons/alt_window_16.gif,icons/alt_wi...
</property>
</product>
</extension>
あとはpropertyタグでさまざまなプロパティを設定することで...
**関連リンク [#e57061e3]
-[[ポップアップやメニューバーにアクションを追加するための...
-[[ワークベンチのメニューバーに、プログラマティカルにメニ...
-[[RCPをやってみる(Eclipse 3.4以前の記事)>Eclipse/プラグ...
-[[RCPの製品情報などの画面を追加する>Eclipse/プラグイン開...
-[[製品情報などで使用する、プロパティ値の一覧>Eclipse/プ...
----
この記事は
#vote(おもしろかった[10],そうでもない[0])
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: