Eclipseプラグイン開発

Javaプロジェクト作成ウィザードを少しだけ拡張したい

ちょっとだけクラスパスの追加をしたいときとかのアドホックな方法。 org.eclipse.jdt.internal.ui.wizards.JavaProjectWizard 必要なページをaddPage()して、実行処理はfinishPage()メソッドをちょっと書き換え。 JavaProjectWizardFirstPage、JavaProjectW…

Javaクラスを選択して実行したアクションでJavaクラス名をひろう

ICompilationUnit#findPrimaryType().getFullyQualifiedName() でとれる。こんなの探して30分〜。プラグイン開発スキルがぜんぜん進歩してません。はい。 import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaProject; import …

ストリング置き換え変数をプログラム的に追加する

設定画面の実行/デバッグ→ストリング置き換え変数で追加するのと同じこと。 IStringVariableManager manager = StringVariableManager.getDefault(); IValueVariable variable = manager.newValueVariable("キー","説明"); variable.setValue("値"); manager…

TableViewerで更新可能なセル

をするには、テーブルビューアにCellEditorとCellModifierをセットすればいい。 CellEditor editors = new CellEditor[3]; editors[1] = new TextCellEditor(viewer.getTable());//1カラム目 viewer.setCellEditors(editors); viewer.setCellModifier(new Ce…

 プロパティービューに表示する

なお、アウトラインページ(に限らずワークベンチパート)で選択されるモデルをプロパティービューに表示するには、モデル(ContentProviderなどから返すオブジェクト)にIPropertySourceを実装しておくか、IAdaptableを実装しておいて、getAdapter()でIProperty…

 アウトラインページ

エディタクラスでgetAdapter()メソッドを定義しておくと、あちこちのパートからこのメソッドが呼ばれて、アウトラインページから呼ばれたときに、IContentOutlinePageを返せばいい。 public Object getAdapter(Class key) { if (key.equals(IContentOutlineP…

 Javaエディタで開く

internalだが次のメソッドが利用できる。 OpenActionUtil.open(type, true); たとえば、"java.lang.String"のソースをエディタで開きたい場合、"java.lang.String"からなんとかITypeを取得し、このメソッドを呼べばよい。"なんとか"、については以下などを参…

 エディタのコンテキストメニュー

plugin.xmlにviewerContributionを定義することで、エディタのコンテキストメニューにアクションを追加できるが、単にそのエディタでしか使わないアクションだったら、(TextEditorなどの)エディタクラスのメソッドをオーバーライドしてもいい↓ protected voi…

 エディタのキーバインディング

エディタのキーバインディング。まだよくわかってないんだけど、こんな感じで動きました。 <extension point="org.eclipse.ui.commands"> <category name="Hoge Editor" description="aaa" id="com.muimi.hoge.command.category"> </category> </extension>

リターゲット可能なアクション

<action id="mytest.action1" definitionId="mytest.open" label="Open" retarget="true" menubarPath="navigate/open.ext" allowLabelUpdate="true" > </action> リターゲット可能なアクションは、ソース中でdefinitionIdを指定して、アクションを再指定可能。エディターのアクションなどだと、EditorのcontributorClassなどで再ターゲットするといいみたい。 public class HogeContrib extends Editor…

 コンテンツアシスト用に有効なJavaクラスをひっぱってくる

IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); SearchEngine engine = new SearchEngine(); ISearchPattern pattern = SearchEngine.createSearchPattern( "java.lang.Str*", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIO…