谷本 心 in せろ部屋 このページをアンテナに追加 RSSフィード

2009-09-20

[]1つのViewPartクラスを複数開く方法

Eclipseプラグインで、同じViewPartを(エディタのように)何枚も開けるようにする方法。


1. plugin.xmlで、対象のview定義に「allowMultiple="true"」属性を定義する。

2. ViewPartを開く際に、IWorkbenchPage#showView(String viewId, String secondaryId, int mode) を使って開く。


viewIdはそのまま、plugin.xmlに記述しているviewIdのこと。

secondaryIdは、同じviewId内のID。連番でもユニークな名称でも何でも良い。

modeは、通常はIWorkbenchPage.VIEW_ACTIVATEを使っていれば問題なし。

[]ViewPartを他のペインに移動させない(独立させる)方法

ちょっとハマったので、メモ。


plugin.xmlのviewの属性定義で「standalone="true"」になっていると

そのビューは他のビューと同じペインに入れることが出来なくなる。

[]TableViewerの値を編集(入力)した時に、勝手にソートされてしまう場合

TableViewerのセルの値を更新した際に、

勝手に別の行のセルが更新されてしまうなど、おかしな挙動をする場合。


TableViewerにバインドしているオブジェクトのequalsメソッドが怪しい。

「別インスタンスでも、値が全て一致したらequalsでtrueを返す」ような実装にしていると、

上に書いたような現象が起こる。

2008-03-24

[]他のプラグインと動的に連携する方法。

Eclipseプラグインを開発する際に、

既存の(別の)プラグインと動的に連携する方法。

Bundle bundle = Platform.getBundle(PLUGIN_ID);
Class loadClass = bundle.loadClass(PLUGIN_CLASS);

こうやれば、別のプラグインで使っているクラスが取得できる。

[]拡張可能なMultiPageEditorを作ってみた。

まずはスクリーンショットだけ。

f:id:cero-t:20080325031901p:image:w450

1つのMultiPageEditorの中で、

HTMLをEclipseHTMLEditorで開き、

MayaaをMatatabiで開き、

JavaをJavaEditor(EclipseJavaエディタ)で開いています。


しかも、バンドルIDとクラス名を使って動的にエディタクラスを呼んでいるので、

plugin.xmlとかを書き換える必要なく、

EclipseHTMLEditorやMatatabi(もちろん他のエディタも)を使えます。


ただ、いまのところ、ショートカットとかは全部死んじゃうし、

EclipseHTMLEditor側のプレビューも、効かないんですけどね。

(多分、イベントの伝播をちゃんと行なってないせいだと思いますが)


こんな感じで、

自分の好きなプラグインのクラスを、

自分の思う通りの命名規則で、

複数同時に開けるようなものを作ろうと考えています。


ただ、

そんな拡張可能なMultiPageEditorよりも

おとなしく、HTMLMayaaJavaを開いてくれるエディタを作った方が

実際的だし、重宝されるかも知れないナ、という思いもありますが。

2008-02-10

[]org.eclipse.jface.viewers.TableViewerEditor

Eclipse3.3から、こんな名前のクラスができてた。

名前の通り、セル編集が可能なテーブル。


これは(たぶん)便利だ。

[]org.eclipse.jface.viewers.ColumnLabelProvider

いいねぇ。


Eclipseのテーブル回りって、ホントAPIがショボくて、

セルの値を表示するためには、ITableLabelProviderを使って

「0番目ならこれ、1番目ならこれ、2番目なら・・・」なんて

実装しなきゃいけなかったんだけど

ColumnLabelProviderを使えば、列ごとにクラスを分けて記述できる。

column.setLabelProvider(new ColumnLabelProvider() {
	public String getText(Object element) {
		return ((Employee) element).ename;
	}
});

やっと、まともになった感じ。

2006-12-11

[]Seasar Eclipse CommonのTableProviderが便利すぎる件について。

最近Eclipseプラグインを作っているわけですが、

TableViewerを編集可能にするAPIってイマイチ

という意見に激しく同意。


ナンダカナーと思って、Seasar Eclipse Commonを覗いたら

上記のソースがコミットされていました。


早速、利用。

バッチリ使えてます。

ありがとう>太一さん


ただ、これを使うためだけに、

S2のjarが必要になっちゃうのは、ちょっとネ。

Jakarta Commonsみたいに、Seasar Commonsにならないかな?