// 下階層用テンプレート
#topicpath
----
org.eclipse.ui.IViewPart はパースペクティブ内のひとつのビュー(コンソールとか、パッケージエクスプローラとかの)を表すインターフェースです。このインターフェースを実装することによって、自作のビューを作成することが出来ます。

**使い方
#contents

***拡張ポイント
 org.eclipse.ui.views

***plugin.xmlのサンプル
 <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が属するカテゴリID
     class="com.samples.myview.SimpleView"    <- viewを実装するクラス名
     id="com.samples.myview.simpleview">      <- viewのID
   </view>
 </extension>


***ポイント
plugin.xmlを開いているときのプロパティビューより、classを選択すると対応するクラス(ここではcom.samples.myview.SimpleView)のスケルトンをウィザードが作ってくれます。


ビューを画面に描画するとき((ウィンドウ >> ビューでこのビューを選ぶ時))createPartControlが呼ばれるので、このメソッド内でウィジェットを配置していきます。




**TIPS
***選択されたときに起動するメソッドsetFocus
自分が選択されたときに、ビュー内を更新したいときなどに使用します。
 public void setFocus() {
  ウィジェットの更新処理
 }
など

**TIPS
***ISelectionListenerを実装する
ビューは選択しているオブジェクトの情報を表示することが多いので、選択しているものが変わったときにウィジェットを更新する、というアルゴリズムにしたいことが多いと思います。その場合はISelectionListenerを実装します。
 public void selectionChanged(IWorkbenchPart part,ISelection selection){
   ウィジェットの更新処理
 }
この場合、自分(this)を IWorkbenchPageインターフェースにattachする必要がありますが、createPartControlメソッド内で
 getViewSite().getPage().addSelectionListener(this);
とすればよいでしょう。

このリスナですが、テキストエディタ内で文字列を入力とかした場合は呼ばれないんですね。呼ばれるタイミングは、
このリスナですが、呼ばれるタイミングは、
-パッケージエクスプローラ内でなんかを選択した
など、なんかを選択した時なのですが、なぜかテキストエディタ内でドラッグした場合も呼ばれるみたいですね。
-テキストエディタ内でドラッグした

などみたいですが、

-テキストエディタ内で文字列を入力とかした場合

は呼ばれないんですね。ようわからんです。


----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS