2017-01-19 10 views
0

Eclipse-RCPのプラグインで作業しています。 TreeViewerを持つ別のプラグインがあり、プラグインからアイテムを選択したいのですが。私はそれにアクセスする方法を知らない、これも可能ですか?別のプラグインからRCPのTreeViewerを取得

私は正しいビューを得ることができると思う:

IViewReference home; 
    IViewReference [] viewRefs = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences(); 
    for (int i = 0; i < viewRefs.length; i++) { 
     if(viewRefs[i].getId()==myid){ 
      home = viewRefs[i]; 
      break; 
     } 
    } 

しかし、家はTreeViewerではないと私はそれをキャスト傾けます。 TreeViewerはどのように入手できますか?

home.getTreeViewer() //Doesn't work cause of casting issues 

私はrcpの初心者ですから、いくつかの説明にはいいと思います。

答えて

0

あなたが使用してビューを見つける必要がありますあなたのViewPartクラスです。 getTreeViewerメソッドを記述する必要があります。

ビューは、現在あなたがshowViewを使用することができます開いていない場合:

viewPart = page.showView("your view id"); 
+0

私はpage.findView(ID)を作る場合、私はお返しにnullを取得しますが、私はそれをデバッグし、ページに表示されることを見ました正しいIDを持つ – Ludy

+0

実際にはビューは実際に開いていますか?開いていなければ、 'showView'を代わりに使う必要があります - 更新された答えを見てください。そのIDを持つビューが開いている場合、findViewは確実に機能します。 –

+0

plugin.xmlのビューの 'org.eclipse.ui.views'宣言と' findView'で使用しているidを教えてください。 –

0

他のビューのタイプにhomeをキャストしなければなりません。その後、TreeViewerを取得することができます。

0

アクティブIWorkbenchPageから直接ViewPartを見つけることができます。IWorkbenchPage#findView(java.lang.String)を使用してください。その後、

あなたが選択したいオブジェクトを持っている場合は、ビューのサイトを取得し、サイトの選択プロバイダを取得し、(オブジェクトを含むStructuredSelectionインスタンスに)選択すべきかの選択プロバイダを教えてください。これは、ツリーや、その中にあるもの(ツリーのことを気にする必要はありません)に実際に選択するように指示しているオブジェクトが含まれている場合にのみ機能します。

if (viewPart != null) { 
    MyViewClass myViewPart = (MyViewClass)viewPart; 

    myViewPart.getTreeViewer(); 
} 

MyViewClass:あなたは、そのクラスに書く方法

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 

IViewPart viewPart = page.findView("your view id"); 

あなたは、あなたのビュークラスにビューの一部をキャストすることができますし、呼び出します。

関連する問題