Eclipse/プラグイン開発のTIPS集/GooglePlugin/まずはCoreをつくる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
//ここにコンテンツを記述します。
#contents
**必要な環境 [#h976f9bb]
今回は以下の環境で開発・確認を行っています。
-OSはWindows XP Home SP2
-Javaのランタイム環境としてはJRE1.5.0_06
-プラグインの開発環境として[[Eclipse3.1.2:http://www.ecli...
-デバッグログの制御としては[[Log4j:http://logging.apache....
-Web Servicesのランタイムライブラリとして[[Apache Axis:ht...
-また、今回作成するプラグインはGoogle Web APIsを使用しま...
**作成するプラグインの概要 [#q9dfe78e]
今回作成するGoogleプラグインの概要はおおむね下の通りです。
-Eclipseでコーディング中にエディタ上のテキストを選択して...
-検索結果一覧から、ダブルクリックやポップアップメニューで...
-検索結果一覧から、デスクトップなどへドラッグ&ドロップで...
-プラグインは全てEclipse3.1系向けに作成しています。
#ref(screenshot1.gif)
~
~
#ref(screenshot2.gif)
**プラグインの構成 [#f9eaf7b3]
作成するGoogleプラグインは以下のようなプラグインで構成さ...
:nu.mine.kino.plugin.axis|Web Services経由でGoogle検索を...
:nu.mine.kino.plugin.log4j|作成するプラグインは、デバッグ...
:nu.mine.kino.plugin.google.core|Googe Web APIsを使用して...
:nu.mine.kino.plugin.google.ui|上のコアプラグインを用いた...
上のプラグインのうち、nu.mine.kino.plugin.log4j,nu.mine.k...
またGoogle Web APIs Developer's KitにはすでにWeb Services...
java org.apache.axis.wsdl.WSDL2Java -p nu.mine.kino.goog...
とすることでProxyのJavaソースを作成する事ができます。今回...
**まずはCoreをつくる [#s03def87]
今回はGUIに依存しないコアの部分を作成します。
***プラグイン・プロジェクトの作成 [#f4703eb2]
まずはGUIに依存しない、コアのプラグインを作ります。Eclips...
プラグイン・プロジェクトのページ
|LEFT:「プロジェクト名」は|LEFT:nu.mine.kino.plugin.googl...
|LEFT:「プラグインのフォーマット」|LEFT:Eclipseのバージョ...
|LEFT:「OSGiバンドル・マニフェストを作成」|LEFT:チェック...
#ref(wizard01.gif)
プラグイン・コンテンツのページ
|LEFT:プラグインの「プロパティ」|LEFT:そのまま|
|LEFT:「プラグインのライフ・サイクルを制御するJavaクラス...
|LEFT:「UIに追加」|LEFT:チェックを外します。|
|LEFT:「クラス名」|LEFT:nu.mine.kino.plugin.google.core.G...
|LEFT:「リッチク・ライアント・アプリケーションの作成」|LE...
#ref(wizard02.gif)
終了をクリックします。以上でプラグインのプロジェクトが作...
***Proxyをソースディレクトリに配置 [#i1032bad]
先に作成しておいたProxy (nu.mine.kino.googleapisパッケー...
***plugin.xml,MANIFEST.MFを記述する [#q17da274]
作成したプラグイン・プロジェクトに設定を追加していきます...
org.eclipse.core.runtime
nu.mine.kino.plugin.axis
nu.mine.kino.plugin.log4j
#ref(require.gif)
次にランタイムタブを開いて、エクスポートされるパッケージ...
nu.mine.kino.googleapis
nu.mine.kino.plugin.google.core
を追加しておきます。
#ref(export.gif)
そのほか、プラグイン名やバージョンなど多少変更しています...
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: nu.mine.kino.plugin.google.core
Bundle-Version: 0.1.0
Bundle-Activator: nu.mine.kino.plugin.google.core.Google...
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
nu.mine.kino.plugin.log4j,
nu.mine.kino.plugin.axis
Eclipse-AutoStart: true
Bundle-Vendor: %providerName
Export-Package: nu.mine.kino.googleapis,
nu.mine.kino.plugin.google.core
***プラグインにビジネスロジックを実装する [#nf084708]
このプラグインで必要なビジネスロジックはGoogleの検索機能...
-指定した文字列に対して、スペルチェックを行い、候補の文字...
-指定した文字列を用いて、Google検索を行うメソッドsearch
を実装したいと思います。メソッドのインタフェースは以下の...
-public String getSpellingSuggestion(String myGoogleKey, ...
-public GoogleSearchResult search(String myGoogleKey, Str...
このメソッドをプラグインクラスnu.mine.kino.plugin.google....
まずはログ出力用を行うクラスLoggerと、Google検索を行うサ...
private static final Logger logger = Logger.getLogger(Go...
private GoogleSearchPort_PortType googleSearch;
検索メソッドやスペルチェックメソッドの実装は以下の通りで...
検索メソッドの実装のソース
/**
* 引数の文字列でGoogle検索を行います。エラーが発生した...
*
* @param myGoogleKey Googleのキー
* @param searchText 検索文字列
* @return GoogleSearchResult
* @throws CoreException 何らかのエラーが発生したとき。
*/
public GoogleSearchResult search(String myGoogleKey, Str...
throws CoreException {
logger.debug("search(String) - start");
GoogleSearchResult result = null;
if (googleSearch != null) {
try {
result = googleSearch.doGoogleSearch(myGoogl...
0, 10, false, "", false, "lang_ja", ...
} catch (RemoteException e) {
logger.error(e);
log(e);
IStatus status = new Status(IStatus.ERROR, g...
IStatus.ERROR, e.toString(), e);
throw new CoreException(status);
}
}
logger.debug("search(String) - end");
return result;
}
スペルチェックメソッドの実装のソース
/**
* 引数の文字列にスペルミスがないかをチェックするメソッ...
* スペルミスがある場合、候補を返します。スペルミスがな...
*
* @param myGoogleKey
* @param text
* @return
*/
public String getSpellingSuggestion(String myGoogleKey, ...
logger.debug("getSplellingSuggestion(String, String)...
String suggestionText = null;
try {
suggestionText = googleSearch.doSpellingSuggesti...
} catch (Exception e) {
// 文字によっては例外が発生するので、その場合は
// とりあえず候補がなかったことにして通り過ぎち...
logger.warn(e);
logger.warn("スペルミス補正でエラーが発生しまし...
}
logger.debug("getSplellingSuggestion(String, String)...
return suggestionText;
}
またログ出力用のメソッドやプラグインIDを返すメソッドを追...
public static void log(String message, Exception e) {
IStatus status = new Status(IStatus.ERROR, getPlugin...
IStatus.ERROR, message, e);
getDefault().getLog().log(status);
}
public static void log(String message) {
log(message, null);
}
public static void log(Exception e) {
StringWriter stringWriter = new StringWriter();
e.printStackTrace(new PrintWriter(stringWriter));
String message = stringWriter.getBuffer().toString();
log(message, e);
}
プラグインIDを返すメソッド
public static String getPluginId() {
return getDefault().getBundle().getSymbolicName();
}
続いて、startメソッドでサービスインタフェースを取得するよ...
public void start(BundleContext context) throws Exceptio...
logger.debug("start(BundleContext) - start");
super.start(context);
// Web Services Proxyの取得
try {
GoogleSearchServiceLocator locator = new GoogleSea...
googleSearch = locator.getGoogleSearchPort();
} catch (ServiceException e) {
logger.error(e);
log(e);
}
logger.debug("start(BundleContext) - end");
}
以上でプラグインクラスにビジネスロジックを定義することが...
**テストプラグインの作成 [#g8f7e6c8]
さて、作成したプラグインのメソッドをテストして今回は終わ...
プロジェクト名:nu.mine.kino.plugin.google.core.test
テスト用プラグインには、テスト対象のプラグインnu.mine.kin...
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Test プラグイン
Bundle-SymbolicName: nu.mine.kino.plugin.google.core.test
Bundle-Version: 1.0.0
Bundle-Activator: nu.mine.kino.plugin.google.core.test.T...
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,
nu.mine.kino.plugin.google.core,
org.junit
Eclipse-AutoStart: true
***テストクラスを作成する [#c04ad3ff]
メソッドを実装したクラスnu.mine.kino.plugin.google.core.G...
#ref(test01.gif)
次へをクリックするとテストメソッドの追加画面になりますが...
getSplellingSuggestion(String myGoogleKey, String text)
search(String myGoogleKey, String searchText)
にチェックして終了をクリックします。
#ref(test02.gif)
テストクラスGoogleCorePluginTestには以下のようにメソッド...
searchのテストメソッド
public void testSearch() {
try {
GoogleSearchResult result = GoogleCorePlugin.get...
"xxxxxxxxxxxx", "Eclipse");
// ↑Google SOAP Search API のサイトで取得...
ResultElement[] resultElements = result.getResul...
for (int i = 0; i < resultElements.length; i++) {
ResultElement element = resultElements[i];
System.out.println(element.getTitle() + ":" ...
}
} catch (CoreException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
getSplellingSuggestionのテストメソッド
public void testGetSplellingSuggestion() {
String spellingSuggestion = GoogleCorePlugin.getDefa...
.getSpellingSuggestion("xxxxxxxxxxxx","Eclip...
if (spellingSuggestion != null) {
System.out.println("修正候補は:" + spellingSugge...
} else {
System.out.println("修正候補はありません");
}
spellingSuggestion = GoogleCorePlugin.getDefault()
.getSpellingSuggestion("xxxxxxxxxxxx","Eclip...
if (spellingSuggestion != null) {
System.out.println("修正候補は:" + spellingSugge...
} else {
System.out.println("修正候補はありません");
}
}
"xxxxxxxxxxxx"の箇所はあらかじめGoogle SOAP Search API の...
さて、このテストメソッドを実行します。パッケージ・エクス...
JUnit実行結果
2006-06-25 00:15:55,203 [main] DEBUG nu.mine.kino.plugin...
start(BundleContext) - start
2006/06/25 0:15:55 org.apache.axis.utils.JavaUtils isAtt...
警告: 要求されたクラス(javax.activation.DataHandler と
javax.mail.internet.MimeMultipart)が見つかりません。Atta...
/ [en]-(Unable to find required classes (javax.activati...
javax.mail.internet.MimeMultipart).
Attachment support is disabled.)
2006-06-25 00:15:56,312 [main] DEBUG nu.mine.kino.plugin...
start(BundleContext) - end
2006-06-25 00:15:56,437 [main] DEBUG nu.mine.kino.plugin...
search(String) - start
2006-06-25 00:15:59,046 [main] DEBUG nu.mine.kino.plugin...
search(String) - end
--- 以下、検索結果 ---
エクリプス:http://eclipsewiki.net/eclipse/
富士通テン : FUJITSU TEN Japan:http://www.fujitsu-ten.co...
<b>ECLIPSE</b>:http://www.fujitsu-ten.co.jp/eclipse/inde...
@IT:連載 <b>Eclipse</b>を使おう!(1):
http://www.atmarkit.co.jp/fjava/rensai2/eclipse01/eclips...
@IT:<b>Eclipse</b>を使おう(1):
http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/ecl...
@IT:<b>Eclipse</b>ではじめるプログラミング(1):
http://www.atmarkit.co.jp/fjava/rensai3/eclipsejava01/ec...
www.<b>eclipse</b>-td.com:http://www.eclipse-td.com/
LIVE! <b>ECLIPSE</b> 2006:トップページ:http://www.live-...
<b>eclipse</b>を使ってみよう:http://muimi.com/j/eclipse/
<b>ECLIPSE</b> 桐原いづみ+KEIG Website:http://www.uni-s...
--- 以上、検索結果 ---
2006-06-25 13:36:54,281 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - start
2006-06-25 13:36:54,828 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - end
修正候補はありません
2006-06-25 13:36:54,828 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - start
2006-06-25 13:36:55,250 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - end
修正候補は:Eclipse <- スペルミスを補正してくれている
**おわりに [#g4082dc2]
今回はEclipseプラグイン開発のうち、GUIに依存しないコアな...
つぎは [[UI部のロジック>Eclipse/プラグイン開発のTIPS集/Go...
**参考資料 [#jf3a2afc]
+[[Google SOAP Search API (beta):http://www.google.com/ap...
----
この記事は
#vote(おもしろかった[15],そうでもない[1])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
//ここにコンテンツを記述します。
#contents
**必要な環境 [#h976f9bb]
今回は以下の環境で開発・確認を行っています。
-OSはWindows XP Home SP2
-Javaのランタイム環境としてはJRE1.5.0_06
-プラグインの開発環境として[[Eclipse3.1.2:http://www.ecli...
-デバッグログの制御としては[[Log4j:http://logging.apache....
-Web Servicesのランタイムライブラリとして[[Apache Axis:ht...
-また、今回作成するプラグインはGoogle Web APIsを使用しま...
**作成するプラグインの概要 [#q9dfe78e]
今回作成するGoogleプラグインの概要はおおむね下の通りです。
-Eclipseでコーディング中にエディタ上のテキストを選択して...
-検索結果一覧から、ダブルクリックやポップアップメニューで...
-検索結果一覧から、デスクトップなどへドラッグ&ドロップで...
-プラグインは全てEclipse3.1系向けに作成しています。
#ref(screenshot1.gif)
~
~
#ref(screenshot2.gif)
**プラグインの構成 [#f9eaf7b3]
作成するGoogleプラグインは以下のようなプラグインで構成さ...
:nu.mine.kino.plugin.axis|Web Services経由でGoogle検索を...
:nu.mine.kino.plugin.log4j|作成するプラグインは、デバッグ...
:nu.mine.kino.plugin.google.core|Googe Web APIsを使用して...
:nu.mine.kino.plugin.google.ui|上のコアプラグインを用いた...
上のプラグインのうち、nu.mine.kino.plugin.log4j,nu.mine.k...
またGoogle Web APIs Developer's KitにはすでにWeb Services...
java org.apache.axis.wsdl.WSDL2Java -p nu.mine.kino.goog...
とすることでProxyのJavaソースを作成する事ができます。今回...
**まずはCoreをつくる [#s03def87]
今回はGUIに依存しないコアの部分を作成します。
***プラグイン・プロジェクトの作成 [#f4703eb2]
まずはGUIに依存しない、コアのプラグインを作ります。Eclips...
プラグイン・プロジェクトのページ
|LEFT:「プロジェクト名」は|LEFT:nu.mine.kino.plugin.googl...
|LEFT:「プラグインのフォーマット」|LEFT:Eclipseのバージョ...
|LEFT:「OSGiバンドル・マニフェストを作成」|LEFT:チェック...
#ref(wizard01.gif)
プラグイン・コンテンツのページ
|LEFT:プラグインの「プロパティ」|LEFT:そのまま|
|LEFT:「プラグインのライフ・サイクルを制御するJavaクラス...
|LEFT:「UIに追加」|LEFT:チェックを外します。|
|LEFT:「クラス名」|LEFT:nu.mine.kino.plugin.google.core.G...
|LEFT:「リッチク・ライアント・アプリケーションの作成」|LE...
#ref(wizard02.gif)
終了をクリックします。以上でプラグインのプロジェクトが作...
***Proxyをソースディレクトリに配置 [#i1032bad]
先に作成しておいたProxy (nu.mine.kino.googleapisパッケー...
***plugin.xml,MANIFEST.MFを記述する [#q17da274]
作成したプラグイン・プロジェクトに設定を追加していきます...
org.eclipse.core.runtime
nu.mine.kino.plugin.axis
nu.mine.kino.plugin.log4j
#ref(require.gif)
次にランタイムタブを開いて、エクスポートされるパッケージ...
nu.mine.kino.googleapis
nu.mine.kino.plugin.google.core
を追加しておきます。
#ref(export.gif)
そのほか、プラグイン名やバージョンなど多少変更しています...
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: nu.mine.kino.plugin.google.core
Bundle-Version: 0.1.0
Bundle-Activator: nu.mine.kino.plugin.google.core.Google...
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
nu.mine.kino.plugin.log4j,
nu.mine.kino.plugin.axis
Eclipse-AutoStart: true
Bundle-Vendor: %providerName
Export-Package: nu.mine.kino.googleapis,
nu.mine.kino.plugin.google.core
***プラグインにビジネスロジックを実装する [#nf084708]
このプラグインで必要なビジネスロジックはGoogleの検索機能...
-指定した文字列に対して、スペルチェックを行い、候補の文字...
-指定した文字列を用いて、Google検索を行うメソッドsearch
を実装したいと思います。メソッドのインタフェースは以下の...
-public String getSpellingSuggestion(String myGoogleKey, ...
-public GoogleSearchResult search(String myGoogleKey, Str...
このメソッドをプラグインクラスnu.mine.kino.plugin.google....
まずはログ出力用を行うクラスLoggerと、Google検索を行うサ...
private static final Logger logger = Logger.getLogger(Go...
private GoogleSearchPort_PortType googleSearch;
検索メソッドやスペルチェックメソッドの実装は以下の通りで...
検索メソッドの実装のソース
/**
* 引数の文字列でGoogle検索を行います。エラーが発生した...
*
* @param myGoogleKey Googleのキー
* @param searchText 検索文字列
* @return GoogleSearchResult
* @throws CoreException 何らかのエラーが発生したとき。
*/
public GoogleSearchResult search(String myGoogleKey, Str...
throws CoreException {
logger.debug("search(String) - start");
GoogleSearchResult result = null;
if (googleSearch != null) {
try {
result = googleSearch.doGoogleSearch(myGoogl...
0, 10, false, "", false, "lang_ja", ...
} catch (RemoteException e) {
logger.error(e);
log(e);
IStatus status = new Status(IStatus.ERROR, g...
IStatus.ERROR, e.toString(), e);
throw new CoreException(status);
}
}
logger.debug("search(String) - end");
return result;
}
スペルチェックメソッドの実装のソース
/**
* 引数の文字列にスペルミスがないかをチェックするメソッ...
* スペルミスがある場合、候補を返します。スペルミスがな...
*
* @param myGoogleKey
* @param text
* @return
*/
public String getSpellingSuggestion(String myGoogleKey, ...
logger.debug("getSplellingSuggestion(String, String)...
String suggestionText = null;
try {
suggestionText = googleSearch.doSpellingSuggesti...
} catch (Exception e) {
// 文字によっては例外が発生するので、その場合は
// とりあえず候補がなかったことにして通り過ぎち...
logger.warn(e);
logger.warn("スペルミス補正でエラーが発生しまし...
}
logger.debug("getSplellingSuggestion(String, String)...
return suggestionText;
}
またログ出力用のメソッドやプラグインIDを返すメソッドを追...
public static void log(String message, Exception e) {
IStatus status = new Status(IStatus.ERROR, getPlugin...
IStatus.ERROR, message, e);
getDefault().getLog().log(status);
}
public static void log(String message) {
log(message, null);
}
public static void log(Exception e) {
StringWriter stringWriter = new StringWriter();
e.printStackTrace(new PrintWriter(stringWriter));
String message = stringWriter.getBuffer().toString();
log(message, e);
}
プラグインIDを返すメソッド
public static String getPluginId() {
return getDefault().getBundle().getSymbolicName();
}
続いて、startメソッドでサービスインタフェースを取得するよ...
public void start(BundleContext context) throws Exceptio...
logger.debug("start(BundleContext) - start");
super.start(context);
// Web Services Proxyの取得
try {
GoogleSearchServiceLocator locator = new GoogleSea...
googleSearch = locator.getGoogleSearchPort();
} catch (ServiceException e) {
logger.error(e);
log(e);
}
logger.debug("start(BundleContext) - end");
}
以上でプラグインクラスにビジネスロジックを定義することが...
**テストプラグインの作成 [#g8f7e6c8]
さて、作成したプラグインのメソッドをテストして今回は終わ...
プロジェクト名:nu.mine.kino.plugin.google.core.test
テスト用プラグインには、テスト対象のプラグインnu.mine.kin...
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Test プラグイン
Bundle-SymbolicName: nu.mine.kino.plugin.google.core.test
Bundle-Version: 1.0.0
Bundle-Activator: nu.mine.kino.plugin.google.core.test.T...
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,
nu.mine.kino.plugin.google.core,
org.junit
Eclipse-AutoStart: true
***テストクラスを作成する [#c04ad3ff]
メソッドを実装したクラスnu.mine.kino.plugin.google.core.G...
#ref(test01.gif)
次へをクリックするとテストメソッドの追加画面になりますが...
getSplellingSuggestion(String myGoogleKey, String text)
search(String myGoogleKey, String searchText)
にチェックして終了をクリックします。
#ref(test02.gif)
テストクラスGoogleCorePluginTestには以下のようにメソッド...
searchのテストメソッド
public void testSearch() {
try {
GoogleSearchResult result = GoogleCorePlugin.get...
"xxxxxxxxxxxx", "Eclipse");
// ↑Google SOAP Search API のサイトで取得...
ResultElement[] resultElements = result.getResul...
for (int i = 0; i < resultElements.length; i++) {
ResultElement element = resultElements[i];
System.out.println(element.getTitle() + ":" ...
}
} catch (CoreException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
getSplellingSuggestionのテストメソッド
public void testGetSplellingSuggestion() {
String spellingSuggestion = GoogleCorePlugin.getDefa...
.getSpellingSuggestion("xxxxxxxxxxxx","Eclip...
if (spellingSuggestion != null) {
System.out.println("修正候補は:" + spellingSugge...
} else {
System.out.println("修正候補はありません");
}
spellingSuggestion = GoogleCorePlugin.getDefault()
.getSpellingSuggestion("xxxxxxxxxxxx","Eclip...
if (spellingSuggestion != null) {
System.out.println("修正候補は:" + spellingSugge...
} else {
System.out.println("修正候補はありません");
}
}
"xxxxxxxxxxxx"の箇所はあらかじめGoogle SOAP Search API の...
さて、このテストメソッドを実行します。パッケージ・エクス...
JUnit実行結果
2006-06-25 00:15:55,203 [main] DEBUG nu.mine.kino.plugin...
start(BundleContext) - start
2006/06/25 0:15:55 org.apache.axis.utils.JavaUtils isAtt...
警告: 要求されたクラス(javax.activation.DataHandler と
javax.mail.internet.MimeMultipart)が見つかりません。Atta...
/ [en]-(Unable to find required classes (javax.activati...
javax.mail.internet.MimeMultipart).
Attachment support is disabled.)
2006-06-25 00:15:56,312 [main] DEBUG nu.mine.kino.plugin...
start(BundleContext) - end
2006-06-25 00:15:56,437 [main] DEBUG nu.mine.kino.plugin...
search(String) - start
2006-06-25 00:15:59,046 [main] DEBUG nu.mine.kino.plugin...
search(String) - end
--- 以下、検索結果 ---
エクリプス:http://eclipsewiki.net/eclipse/
富士通テン : FUJITSU TEN Japan:http://www.fujitsu-ten.co...
<b>ECLIPSE</b>:http://www.fujitsu-ten.co.jp/eclipse/inde...
@IT:連載 <b>Eclipse</b>を使おう!(1):
http://www.atmarkit.co.jp/fjava/rensai2/eclipse01/eclips...
@IT:<b>Eclipse</b>を使おう(1):
http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/ecl...
@IT:<b>Eclipse</b>ではじめるプログラミング(1):
http://www.atmarkit.co.jp/fjava/rensai3/eclipsejava01/ec...
www.<b>eclipse</b>-td.com:http://www.eclipse-td.com/
LIVE! <b>ECLIPSE</b> 2006:トップページ:http://www.live-...
<b>eclipse</b>を使ってみよう:http://muimi.com/j/eclipse/
<b>ECLIPSE</b> 桐原いづみ+KEIG Website:http://www.uni-s...
--- 以上、検索結果 ---
2006-06-25 13:36:54,281 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - start
2006-06-25 13:36:54,828 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - end
修正候補はありません
2006-06-25 13:36:54,828 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - start
2006-06-25 13:36:55,250 [main] DEBUG nu.mine.kino.plugin...
getSpellingSuggestion(String, String) - end
修正候補は:Eclipse <- スペルミスを補正してくれている
**おわりに [#g4082dc2]
今回はEclipseプラグイン開発のうち、GUIに依存しないコアな...
つぎは [[UI部のロジック>Eclipse/プラグイン開発のTIPS集/Go...
**参考資料 [#jf3a2afc]
+[[Google SOAP Search API (beta):http://www.google.com/ap...
----
この記事は
#vote(おもしろかった[15],そうでもない[1])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: