Eclipse/プラグイン開発のTIPS集
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
----
//ここにコンテンツを記述します。
#include(Eclipse/プラグイン開発のTIPS集/記事一覧)
#contents
**覚え書き [#j62d232a]
***とりあえずやってみる [#k6a964ed]
JavaWorldの2004年3月号に特集されていたので、Eclipseのプラ...
Eclipseはこのプラグインの固まりで、すべての機能はプラグイ...
まだ全然やり方がわかりません。とりあえずView(パースペクテ...
簡単なやり方は
- プラグイン開発 >> プラグイン・プロジェクト >> プロジェ...
(プロジェクト名はたとえばnu.mine.kino.sampleとか)
-プラグイン・コード生成プログラム >> デフォルト・プラグイ...
(何も追加しない単純なテンプレート)
後はすべてデフォルトでOKでよいです。ウィザードが完了する...
基本的な構成はできたので、次はプラグインファイル(plugin.x...
-プラグインエディタの拡張タブ >> 追加 >> 汎用ウィザード >...
-拡張ポイントを org.eclipse.ui.views を選択
-プラグインエディタの拡張タブより、org.eclipse.ui.viewsを...
-さらに拡張タブより、org.eclipse.ui.viewsを右クリック >> ...
とするとViewを追加できます。後はプロパティViewより必要事...
ただのビューを表示するだけなら
<extension point="org.eclipse.ui.views">
<category
name="サンプルMyView" <- viewが属するカテゴリ名
id="com.samples.myview"> <- カテゴリのID
</category>
<view
name="シンプルView" <- viewのバーのタイトル
category="com.samples.myview" <- viewが属するカテ...
class="com.samples.myview.SimpleView" <- viewを実...
id="com.samples.myview.simpleview"> <- viewのID
</view>
</extension>
で十分です。プロパティViewよりclassを選択すると対応するク...
***サンプルのダウンロード [#w152c277]
ヘルプに リッチ・クライアント・プラットフォーム・アプリケ...
:pserver:anonymous@dev.eclipse.org:/home/eclipse
からチェックアウト可能とのこと。パスワードはなしですね。
WEBからアクセスする場合は
http://dev.eclipse.org/viewcvs/index.cgi/
***Ganymedeで、プラグインを手動で削除したとき [#cfdbe06a]
どうもプラグインのキャッシュが残っているのか、消すことも...
${ECLILPSE_HOME}/p2/org.eclipse.equinox.p2.core
内のファイルを削除すると消えるっぽい。。
***外部のライブラリを使用する [#dc5c9f14]
プラグインディレクトリにlibディレクトリなどを作成しておい...
<runtime>
<library name="hoge.jar"/>
<library name="lib/fuga.jar"/> <-外部ライブラリ
</runtime>
とすればOKです。
*** プロジェクトへの参照を取得する [#u15a6a98]
いわゆるEclipseのプロジェクトへの参照を取得する方法です。
IWorkspaceRoot myWorkspaceRoot =
ResourcesPlugin.getWorkspace().getRoot();
IProject project = myWorkspaceRoot.getProject([プロジェ...
-[[Eclipse/プラグイン開発のTIPS集/ワークスペースのリソー...
***デバッグするためのダイアログを出したい [#a91aa3cd]
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWi...
Shell shell = window.getShell();
MessageDialog.openInformation(shell, "タイトル","メッセ...
が定番でしょう。windowオブジェクトはメソッドを記述するク...
***ウィンドウに配置されているViewを取得する。 [#z76cff34]
IWorkbenchPage page = workbench.getActiveWorkbenchWindow...
IViewReference[] references = page.getViewReferences();
for (int i = 0; i < references.length; i++) {
IViewPart view = references[i].getView(false); <- View...
MessageDialog.openInformation(window.getShell(), "View...
}
***ウィンドウに配置されているViewを、ID指定で取得する。 [...
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchPage workbenchPage = workbench
.getActiveWorkbenchWindow().getActivePage();
//IWorkbenchPage workbenchPage = editor.getSite().getPag...
try {
HogeView view =
(HogeView) workbenchPage.showView("HogeViewのID");
} catch (PartInitException e) {
}
***おなじViewを複数開く [#t81ac22d]
Eclipse3.0から(だと思う)同じウィンドウを複数開くことがで...
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchPage workbenchPage = workbench
.getActiveWorkbenchWindow().getActivePage();
try {
HogeView view =
(HogeView) workbenchPage
.showView("HogeViewのID", "HogeViewの別のID(Uniqueな...
IWorkbenchPage.VIEW_ACTIVATE);
} catch (PartInitException e) {
}
http://d.hatena.ne.jp/muimy/20040804 から情報をいただきま...
***プラグインのパッケージング手順 [#i4b96068]
-build.propertiesに、パッケージしたいものを記述する(bin.i...
-plugin.xmlの右クリック >> Antビルドファイルの作成 でbuil...
-javac要素はソースコードのエンコーディングが考慮されてな...
-ant zip.pluginでZIPが作成される。
-完了。
トラブル(↓メモ書き状態)
-plugin.xmlの右クリック>>Antビルドファイルの作成 は、コン...
-build.propertiesに、パッケージしたいものを記述する(bin.i...
***パッケージ化するとインスタンスを生成できない。 [#kecb2...
[[パッケージ化するとインスタンスを生成できない。:http://g...
私も同じトラブルに遭遇しました。
プラグインをパッケージングすると、何故かエラーになってし...
インスタンスを生成できませんでした。
と言われてしまうんだけど、エラーを調べようにもどこにエラ...
そこでネットを探していたところ、同じような内容の投稿が。...
-ウィンドウ→ビューの表示→その他→PDEランタイム→エラー・ロ...
-エラーログビューで、該当エラーをダブルクリックし「エラー...
-「状況詳細」を選択します(状況詳細はない場合もあります)。...
というところまで分かりました。感謝!!
そのエラーログを見ると、xml関連のライブラリがないと。どう...
plugin.xmlに、
<library name="lib/xercesImpl.jar"/>
<library name="lib/xml-apis.jar"/>
を追加して、ようやく動きました。疲れた...。。。
***プラグインがロードされるタイミング [#lf696913]
http://www-6.ibm.com/jp/developerworks/opensource/040604/...
***拡張ポイントクラス(IExtension)から、そのクラスローダで...
-2.1バージョン
// IExtensionからそれが宣言されているプラグインをIPlugin...
IPluginDescriptor descriptor =
extension.getDeclaringPluginDescriptor();
// そのプラグイン用のクラスローダを取得。
ClassLoader classLoader = descriptor.getPluginClassLoade...
DOMConfigurator configurator = (DOMConfigurator) classLo...
.loadClass("org.apache.log4j.xml.DOMConfigurator")
.newInstance();
-3.0バージョン
String namespace = extension.getNamespace();
Bundle bundleOfExtension = Platform.getBundle(namespace);
DOMConfigurator configurator = (DOMConfigurator) bundleO...
.loadClass("org.apache.log4j.xml.DOMConfigurator")
.newInstance();
どうも、↑こうやってもDOMConfiguratorはlog4j.jarの入ってる...
Thread currentThread = Thread.currentThread();
ClassLoader oldClassLoader = currentThread.getContextCla...
try {
currentThread.setContextClassLoader(plugin.getClass()....
// 普通に処理を書く
} finally {
currentThread.setContextClassLoader(oldClassLoader);
}
が正解っぽい??すいません。時間切れ。。
***リファクタリング >> ストリングの外部化 [#m6e7d7f7]
Eclipse自体のTIPSですが、メモメモ。
Eclipseはハードコーディングされた文字列を外部ファイル(*.p...
|チェック|Externalize|外部化して、//$NON-NLS-1$ をつける|
|×|Ignore|以後無視するよう、//$NON-NLS-1$ をつける|
|×'|Internalize|//$NON-NLS-1$ をはずすもしくはなにもしない|
***plugin.xmlのimport要素の記述の意味 [#p33d3a4d]
Eclipse付属のマニュアルは以下のようになっています。
'''それぞれの依存性は、<import> エレメントを使用して指定...
-plugin - 必要なプラグインの ID
-version - (オプション) バージョン指定
-match - バージョン・マッチング規則。 version 属性が指定...
-export - このプラグインのユーザーに依存プラグイン・クラ...
-optional - この依存性が、厳密に強制されるかどうかを指定...
とくに
:export|たぶん、プラグインBをimportするプラグインAがあ...
A -> B -> C
プラグインBで、プラグインCのexportをtrueにしておけば、...
:optional|プラグインAでimportするプラグインBをoptional...
***未使用の依存関係の検索でいるモノが出てきちゃう [#x7b39...
Log4jのライブラリをさまざまなプラグインで使用するので、ひ...
ワークスペース内のプラグインプロジェクトを、全て「クラス...
***フィーチャー・バージョンの意味 [#x659c9c6]
-フィーチャー・バージョンをプラグインに強制 :すべてフィー...
-プラグインからバージョンをコピー :feature.xmlにワークス...
-フィーチャーで定義されたバージョンをプラグインに強制 :fe...
1番目と最後の違いは、1番目はフィーチャー自体のバージョン...
*** org.eclipse.osgi.util.NLS でプレースホルダ(Eclipse3.1...
if (productName == null) {
message = "Exit application?";
} else {
// プレースホルダが使えるの?
message = NLS.bind("Exit {0}?", productName);
}
という感じで使える。。
***ビューワにコンテキストヘルプを実装する [#v62250e1]
たとえばnu.mine.kino.pluginというプラグインでコンテキスト...
viewer.addHelpListener(new HelpListener() {
public void helpRequested(HelpEvent e) {
String contextId = "nu.mine.kino.plugin.workbench_wi...
nu.mine.kino.pluginはプラグインID
workbench_window_contextは後述のcontext.xml内のキー...
WorkbenchHelp.displayHelp(contextId);
}
});
実際のコンテキストに表示される内容は拡張ポイントorg.eclip...
nu.mine.kino.plugin#plugin.xmlに
<extension point="org.eclipse.help.contexts">
<contexts file="context.xml">
</contexts>
</extension>
とします。
で、context.xmlは以下のよう:
<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.contexts"?>
<contexts>
<context id="workbench_window_context"> <-さっきのキー...
<description>ヘルプです。</description>
<topic label="てすとワークベンチ" href="concepts/co...
<topic label="てすとパースペクティブ" href="concept...
<topic label="てすとワークベンチの管理" href="tasks...
</context>
</contexts>
こうするとviewer上でF1を押したとき、ヘルプが表示されます。
***違うプラグイン上のヘルプファイルを見たい [#me6b0414]
viewer.addHelpListener(new HelpListener() {
public void helpRequested(HelpEvent e) {
String contextId = "nu.mine.kino.doc.workbench_windo...
// nu.mine.kino.doc はこのソースのプラグインとは別の...
WorkbenchHelp.displayHelp(contextId);
}
});
nu.mine.kino.doc#plugin.xmlには以下の内容を記述しておきま...
<extension point="org.eclipse.help.contexts">
<contexts file="context.xml" >
</contexts>
</extension>
context.xmlの書き方は同じでかまいません。
いろいろ処理を調べてみたところ、どうも指定したcontextIdの...
ところで、Eclipse3.1から、
WorkbenchHelp.displayHelp(contextId);
はdeprecatedとなったため、3.1以後は
PlatformUI.getWorkbench().getHelpSystem()
.displayHelp(contextId);
とするほうがよいようです。
*** ステータスバーに文字を表示する [#w46781b5]
[[リレーショナル・データベース・サーバーをEclipseに埋め込...
window 変数をIWorkbenchWindow の インスタンスとしたとき
((ApplicationWindow)window).setStatus("HSQLDB Server alr...
で、ステータスバーに文字列を表示することが出来る
***パースペクティブを操作する [#o0831edf]
まずはパースペクティブのレジストリへのアクセス方法です。...
IPerspectiveRegistry pRegistry =
PlatformUI.getWorkbench().getPerspectiveRegistry();
でレジストリへの参照を取得できます。
続いてパースペクティブ自体にアクセスします。パースペクテ...
public String getDescription();
public String getId();
public ImageDescriptor getImageDescriptor();
public String getLabel();
などのメソッドがあります。
IPerspectiveDescriptorへの参照は以下のように取得できます。
-一覧を取得
IPerspectiveDescriptor[] perspectives = pRegistry.getPer...
-キー値指定で個別に取得
IPerspectiveDescriptor descriptor =
pRegistry.findPerspectiveWithId("plugin.xmlのパースペ...
***パースペクティブをプログラムから切り替える [#necf3bc2]
パースペクティブをセットするメソッドがIWorkbenchWindowと...
PlatformUI.getWorkbench().getActiveWorkbenchWindow().get...
setPerspective(descriptor);<-descriptorはIPerspectiveDes...
なげぇよ、長すぎるよ。あもちろんwindowとか取れる場合はPla...
***リンク付きのラベルを使用する [#d932a074]
Eclipse3.1から導入された、ウィジェット上にリンクを表示す...
#ref(link.png)
コード
Link link = new Link(container, SWT.NONE);
link.setText("<a>リンク</a>, <a>portable</a>
<a href=\"native\">operating systems</a> on which it i...
link.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
System.out.println("Selection: " + event.text);
↑event.textで、href属性があればその中の文字列(上...
href属性がなければ<a>○○</a>の中に囲まれた「○○...
}
});
このようにして、SWT.Selectionのイベントを見て処理をすれば...
***各ビューで選択されているオブジェクトを取得する [#waa83...
Eclipseには、[[ISelectionProviderという、「選択されている...
getSite().getSelectionProvider().getSelection();
と取得できます。
さらにもっと便利なメソッドがありました。
ISelection selection = page.getSelection([viewid]);
で一発で取得できます。pageはIWorkbenchPageのインスタンス...
***プラグインに、プロキシの機能を追加する [#s3b276f6]
自分でコーディングするのももったいないので、すでにあるモ...
org.eclipse.wst.internet.proxy_1.0.100.v200606130645.jar
org.eclipse.wst.internet.proxy.nl1_1.0.100.v200606220026...
を追加すれば、プロクシサーバの設定をする設定画面などが現...
***ウィンドウを隠す [#i0c79970]
タスクトレイだけのアプリを作る場合とか。
PlatformUI.getWorkbench().getActiveWorkbenchWindow().get...
.setVisible(false);
で消えるけど、ALT+TABのアプリ一覧にはでちゃうなあ。。
***別のロケールで起動する。 [#y6b05451]
C:\xxx\eclipse.exe -nl en_US -vmargs -Xmx768M
などと、 -nl en_US と指定すると、USロケールで起動する。
***ワークスペースの場所を聞いてくるようにする。 [#h1cb54b5]
開発中にEclipseからEclipseを起動すると、通常はワークスペ...
-data @noDefault
とすれば聞いてくるようになります。
***org.eclipse.core.resources.IFileからjava.io.Fileを取得...
fileがIFileインスタンスだとして
File instance = file.getLocation().toFile();
でOK!
-[[Builderの作り方>http://www.limy.org/program/eclipse/pl...
***IJavaProject からプロジェクトのエンコーディングを取得...
javaProjectをIJavaProjectだとします。
try {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IProject project = workspace.getRoot()
.getProject(javaProject.getEleme...
System.out.println(project.getDefaultCharset());
} catch (CoreException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
なんだか回りくどいですが、、、、。
-このサイト内の、Eclipseプラグイン開発のコンテンツ一覧
#ls2
#include(Eclipse/プラグイン開発のTIPS集/GooglePlugin)
**[[Eclipseプラグイン開発:http://yoichiro.cocolog-nifty.c...
#showrss(http://yoichiro.cocolog-nifty.com/eclipse/index....
**[[Eclipse開発 Blog:http://eclipse3.seesaa.net/]] [#yd46...
#showrss(http://eclipse3.seesaa.net/index20.rdf,,24,1)
----
-SpringのクラスをラップしてSpring Pluginを作ろうと思った...
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
----
//ここにコンテンツを記述します。
#include(Eclipse/プラグイン開発のTIPS集/記事一覧)
#contents
**覚え書き [#j62d232a]
***とりあえずやってみる [#k6a964ed]
JavaWorldの2004年3月号に特集されていたので、Eclipseのプラ...
Eclipseはこのプラグインの固まりで、すべての機能はプラグイ...
まだ全然やり方がわかりません。とりあえずView(パースペクテ...
簡単なやり方は
- プラグイン開発 >> プラグイン・プロジェクト >> プロジェ...
(プロジェクト名はたとえばnu.mine.kino.sampleとか)
-プラグイン・コード生成プログラム >> デフォルト・プラグイ...
(何も追加しない単純なテンプレート)
後はすべてデフォルトでOKでよいです。ウィザードが完了する...
基本的な構成はできたので、次はプラグインファイル(plugin.x...
-プラグインエディタの拡張タブ >> 追加 >> 汎用ウィザード >...
-拡張ポイントを org.eclipse.ui.views を選択
-プラグインエディタの拡張タブより、org.eclipse.ui.viewsを...
-さらに拡張タブより、org.eclipse.ui.viewsを右クリック >> ...
とするとViewを追加できます。後はプロパティViewより必要事...
ただのビューを表示するだけなら
<extension point="org.eclipse.ui.views">
<category
name="サンプルMyView" <- viewが属するカテゴリ名
id="com.samples.myview"> <- カテゴリのID
</category>
<view
name="シンプルView" <- viewのバーのタイトル
category="com.samples.myview" <- viewが属するカテ...
class="com.samples.myview.SimpleView" <- viewを実...
id="com.samples.myview.simpleview"> <- viewのID
</view>
</extension>
で十分です。プロパティViewよりclassを選択すると対応するク...
***サンプルのダウンロード [#w152c277]
ヘルプに リッチ・クライアント・プラットフォーム・アプリケ...
:pserver:anonymous@dev.eclipse.org:/home/eclipse
からチェックアウト可能とのこと。パスワードはなしですね。
WEBからアクセスする場合は
http://dev.eclipse.org/viewcvs/index.cgi/
***Ganymedeで、プラグインを手動で削除したとき [#cfdbe06a]
どうもプラグインのキャッシュが残っているのか、消すことも...
${ECLILPSE_HOME}/p2/org.eclipse.equinox.p2.core
内のファイルを削除すると消えるっぽい。。
***外部のライブラリを使用する [#dc5c9f14]
プラグインディレクトリにlibディレクトリなどを作成しておい...
<runtime>
<library name="hoge.jar"/>
<library name="lib/fuga.jar"/> <-外部ライブラリ
</runtime>
とすればOKです。
*** プロジェクトへの参照を取得する [#u15a6a98]
いわゆるEclipseのプロジェクトへの参照を取得する方法です。
IWorkspaceRoot myWorkspaceRoot =
ResourcesPlugin.getWorkspace().getRoot();
IProject project = myWorkspaceRoot.getProject([プロジェ...
-[[Eclipse/プラグイン開発のTIPS集/ワークスペースのリソー...
***デバッグするためのダイアログを出したい [#a91aa3cd]
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWi...
Shell shell = window.getShell();
MessageDialog.openInformation(shell, "タイトル","メッセ...
が定番でしょう。windowオブジェクトはメソッドを記述するク...
***ウィンドウに配置されているViewを取得する。 [#z76cff34]
IWorkbenchPage page = workbench.getActiveWorkbenchWindow...
IViewReference[] references = page.getViewReferences();
for (int i = 0; i < references.length; i++) {
IViewPart view = references[i].getView(false); <- View...
MessageDialog.openInformation(window.getShell(), "View...
}
***ウィンドウに配置されているViewを、ID指定で取得する。 [...
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchPage workbenchPage = workbench
.getActiveWorkbenchWindow().getActivePage();
//IWorkbenchPage workbenchPage = editor.getSite().getPag...
try {
HogeView view =
(HogeView) workbenchPage.showView("HogeViewのID");
} catch (PartInitException e) {
}
***おなじViewを複数開く [#t81ac22d]
Eclipse3.0から(だと思う)同じウィンドウを複数開くことがで...
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchPage workbenchPage = workbench
.getActiveWorkbenchWindow().getActivePage();
try {
HogeView view =
(HogeView) workbenchPage
.showView("HogeViewのID", "HogeViewの別のID(Uniqueな...
IWorkbenchPage.VIEW_ACTIVATE);
} catch (PartInitException e) {
}
http://d.hatena.ne.jp/muimy/20040804 から情報をいただきま...
***プラグインのパッケージング手順 [#i4b96068]
-build.propertiesに、パッケージしたいものを記述する(bin.i...
-plugin.xmlの右クリック >> Antビルドファイルの作成 でbuil...
-javac要素はソースコードのエンコーディングが考慮されてな...
-ant zip.pluginでZIPが作成される。
-完了。
トラブル(↓メモ書き状態)
-plugin.xmlの右クリック>>Antビルドファイルの作成 は、コン...
-build.propertiesに、パッケージしたいものを記述する(bin.i...
***パッケージ化するとインスタンスを生成できない。 [#kecb2...
[[パッケージ化するとインスタンスを生成できない。:http://g...
私も同じトラブルに遭遇しました。
プラグインをパッケージングすると、何故かエラーになってし...
インスタンスを生成できませんでした。
と言われてしまうんだけど、エラーを調べようにもどこにエラ...
そこでネットを探していたところ、同じような内容の投稿が。...
-ウィンドウ→ビューの表示→その他→PDEランタイム→エラー・ロ...
-エラーログビューで、該当エラーをダブルクリックし「エラー...
-「状況詳細」を選択します(状況詳細はない場合もあります)。...
というところまで分かりました。感謝!!
そのエラーログを見ると、xml関連のライブラリがないと。どう...
plugin.xmlに、
<library name="lib/xercesImpl.jar"/>
<library name="lib/xml-apis.jar"/>
を追加して、ようやく動きました。疲れた...。。。
***プラグインがロードされるタイミング [#lf696913]
http://www-6.ibm.com/jp/developerworks/opensource/040604/...
***拡張ポイントクラス(IExtension)から、そのクラスローダで...
-2.1バージョン
// IExtensionからそれが宣言されているプラグインをIPlugin...
IPluginDescriptor descriptor =
extension.getDeclaringPluginDescriptor();
// そのプラグイン用のクラスローダを取得。
ClassLoader classLoader = descriptor.getPluginClassLoade...
DOMConfigurator configurator = (DOMConfigurator) classLo...
.loadClass("org.apache.log4j.xml.DOMConfigurator")
.newInstance();
-3.0バージョン
String namespace = extension.getNamespace();
Bundle bundleOfExtension = Platform.getBundle(namespace);
DOMConfigurator configurator = (DOMConfigurator) bundleO...
.loadClass("org.apache.log4j.xml.DOMConfigurator")
.newInstance();
どうも、↑こうやってもDOMConfiguratorはlog4j.jarの入ってる...
Thread currentThread = Thread.currentThread();
ClassLoader oldClassLoader = currentThread.getContextCla...
try {
currentThread.setContextClassLoader(plugin.getClass()....
// 普通に処理を書く
} finally {
currentThread.setContextClassLoader(oldClassLoader);
}
が正解っぽい??すいません。時間切れ。。
***リファクタリング >> ストリングの外部化 [#m6e7d7f7]
Eclipse自体のTIPSですが、メモメモ。
Eclipseはハードコーディングされた文字列を外部ファイル(*.p...
|チェック|Externalize|外部化して、//$NON-NLS-1$ をつける|
|×|Ignore|以後無視するよう、//$NON-NLS-1$ をつける|
|×'|Internalize|//$NON-NLS-1$ をはずすもしくはなにもしない|
***plugin.xmlのimport要素の記述の意味 [#p33d3a4d]
Eclipse付属のマニュアルは以下のようになっています。
'''それぞれの依存性は、<import> エレメントを使用して指定...
-plugin - 必要なプラグインの ID
-version - (オプション) バージョン指定
-match - バージョン・マッチング規則。 version 属性が指定...
-export - このプラグインのユーザーに依存プラグイン・クラ...
-optional - この依存性が、厳密に強制されるかどうかを指定...
とくに
:export|たぶん、プラグインBをimportするプラグインAがあ...
A -> B -> C
プラグインBで、プラグインCのexportをtrueにしておけば、...
:optional|プラグインAでimportするプラグインBをoptional...
***未使用の依存関係の検索でいるモノが出てきちゃう [#x7b39...
Log4jのライブラリをさまざまなプラグインで使用するので、ひ...
ワークスペース内のプラグインプロジェクトを、全て「クラス...
***フィーチャー・バージョンの意味 [#x659c9c6]
-フィーチャー・バージョンをプラグインに強制 :すべてフィー...
-プラグインからバージョンをコピー :feature.xmlにワークス...
-フィーチャーで定義されたバージョンをプラグインに強制 :fe...
1番目と最後の違いは、1番目はフィーチャー自体のバージョン...
*** org.eclipse.osgi.util.NLS でプレースホルダ(Eclipse3.1...
if (productName == null) {
message = "Exit application?";
} else {
// プレースホルダが使えるの?
message = NLS.bind("Exit {0}?", productName);
}
という感じで使える。。
***ビューワにコンテキストヘルプを実装する [#v62250e1]
たとえばnu.mine.kino.pluginというプラグインでコンテキスト...
viewer.addHelpListener(new HelpListener() {
public void helpRequested(HelpEvent e) {
String contextId = "nu.mine.kino.plugin.workbench_wi...
nu.mine.kino.pluginはプラグインID
workbench_window_contextは後述のcontext.xml内のキー...
WorkbenchHelp.displayHelp(contextId);
}
});
実際のコンテキストに表示される内容は拡張ポイントorg.eclip...
nu.mine.kino.plugin#plugin.xmlに
<extension point="org.eclipse.help.contexts">
<contexts file="context.xml">
</contexts>
</extension>
とします。
で、context.xmlは以下のよう:
<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.contexts"?>
<contexts>
<context id="workbench_window_context"> <-さっきのキー...
<description>ヘルプです。</description>
<topic label="てすとワークベンチ" href="concepts/co...
<topic label="てすとパースペクティブ" href="concept...
<topic label="てすとワークベンチの管理" href="tasks...
</context>
</contexts>
こうするとviewer上でF1を押したとき、ヘルプが表示されます。
***違うプラグイン上のヘルプファイルを見たい [#me6b0414]
viewer.addHelpListener(new HelpListener() {
public void helpRequested(HelpEvent e) {
String contextId = "nu.mine.kino.doc.workbench_windo...
// nu.mine.kino.doc はこのソースのプラグインとは別の...
WorkbenchHelp.displayHelp(contextId);
}
});
nu.mine.kino.doc#plugin.xmlには以下の内容を記述しておきま...
<extension point="org.eclipse.help.contexts">
<contexts file="context.xml" >
</contexts>
</extension>
context.xmlの書き方は同じでかまいません。
いろいろ処理を調べてみたところ、どうも指定したcontextIdの...
ところで、Eclipse3.1から、
WorkbenchHelp.displayHelp(contextId);
はdeprecatedとなったため、3.1以後は
PlatformUI.getWorkbench().getHelpSystem()
.displayHelp(contextId);
とするほうがよいようです。
*** ステータスバーに文字を表示する [#w46781b5]
[[リレーショナル・データベース・サーバーをEclipseに埋め込...
window 変数をIWorkbenchWindow の インスタンスとしたとき
((ApplicationWindow)window).setStatus("HSQLDB Server alr...
で、ステータスバーに文字列を表示することが出来る
***パースペクティブを操作する [#o0831edf]
まずはパースペクティブのレジストリへのアクセス方法です。...
IPerspectiveRegistry pRegistry =
PlatformUI.getWorkbench().getPerspectiveRegistry();
でレジストリへの参照を取得できます。
続いてパースペクティブ自体にアクセスします。パースペクテ...
public String getDescription();
public String getId();
public ImageDescriptor getImageDescriptor();
public String getLabel();
などのメソッドがあります。
IPerspectiveDescriptorへの参照は以下のように取得できます。
-一覧を取得
IPerspectiveDescriptor[] perspectives = pRegistry.getPer...
-キー値指定で個別に取得
IPerspectiveDescriptor descriptor =
pRegistry.findPerspectiveWithId("plugin.xmlのパースペ...
***パースペクティブをプログラムから切り替える [#necf3bc2]
パースペクティブをセットするメソッドがIWorkbenchWindowと...
PlatformUI.getWorkbench().getActiveWorkbenchWindow().get...
setPerspective(descriptor);<-descriptorはIPerspectiveDes...
なげぇよ、長すぎるよ。あもちろんwindowとか取れる場合はPla...
***リンク付きのラベルを使用する [#d932a074]
Eclipse3.1から導入された、ウィジェット上にリンクを表示す...
#ref(link.png)
コード
Link link = new Link(container, SWT.NONE);
link.setText("<a>リンク</a>, <a>portable</a>
<a href=\"native\">operating systems</a> on which it i...
link.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
System.out.println("Selection: " + event.text);
↑event.textで、href属性があればその中の文字列(上...
href属性がなければ<a>○○</a>の中に囲まれた「○○...
}
});
このようにして、SWT.Selectionのイベントを見て処理をすれば...
***各ビューで選択されているオブジェクトを取得する [#waa83...
Eclipseには、[[ISelectionProviderという、「選択されている...
getSite().getSelectionProvider().getSelection();
と取得できます。
さらにもっと便利なメソッドがありました。
ISelection selection = page.getSelection([viewid]);
で一発で取得できます。pageはIWorkbenchPageのインスタンス...
***プラグインに、プロキシの機能を追加する [#s3b276f6]
自分でコーディングするのももったいないので、すでにあるモ...
org.eclipse.wst.internet.proxy_1.0.100.v200606130645.jar
org.eclipse.wst.internet.proxy.nl1_1.0.100.v200606220026...
を追加すれば、プロクシサーバの設定をする設定画面などが現...
***ウィンドウを隠す [#i0c79970]
タスクトレイだけのアプリを作る場合とか。
PlatformUI.getWorkbench().getActiveWorkbenchWindow().get...
.setVisible(false);
で消えるけど、ALT+TABのアプリ一覧にはでちゃうなあ。。
***別のロケールで起動する。 [#y6b05451]
C:\xxx\eclipse.exe -nl en_US -vmargs -Xmx768M
などと、 -nl en_US と指定すると、USロケールで起動する。
***ワークスペースの場所を聞いてくるようにする。 [#h1cb54b5]
開発中にEclipseからEclipseを起動すると、通常はワークスペ...
-data @noDefault
とすれば聞いてくるようになります。
***org.eclipse.core.resources.IFileからjava.io.Fileを取得...
fileがIFileインスタンスだとして
File instance = file.getLocation().toFile();
でOK!
-[[Builderの作り方>http://www.limy.org/program/eclipse/pl...
***IJavaProject からプロジェクトのエンコーディングを取得...
javaProjectをIJavaProjectだとします。
try {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IProject project = workspace.getRoot()
.getProject(javaProject.getEleme...
System.out.println(project.getDefaultCharset());
} catch (CoreException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
なんだか回りくどいですが、、、、。
-このサイト内の、Eclipseプラグイン開発のコンテンツ一覧
#ls2
#include(Eclipse/プラグイン開発のTIPS集/GooglePlugin)
**[[Eclipseプラグイン開発:http://yoichiro.cocolog-nifty.c...
#showrss(http://yoichiro.cocolog-nifty.com/eclipse/index....
**[[Eclipse開発 Blog:http://eclipse3.seesaa.net/]] [#yd46...
#showrss(http://eclipse3.seesaa.net/index20.rdf,,24,1)
----
-SpringのクラスをラップしてSpring Pluginを作ろうと思った...
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: