从另一个插件获取RCP中的TreeViewer

时间:2017-01-19 09:15:20

标签: java eclipse-rcp

我正在为Eclipse-RCP插件工作。还有另一个带有TreeViewer的插件,我想从我的插件中选择一个Item。我不知道如何访问它,这是否可能?

我认为可以通过以下方式获得正确的观点:

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的新手,所以我很乐意做一些解释。

3 个答案:

答案 0 :(得分:0)

您必须将home投射到其他视图的类型。然后你可以得到TreeViewer。

答案 1 :(得分:0)

您可以使用(function($) { $.ajax({ url: "<?php echo $this->getUrl('topperproductqa/index/ajax') ?>", dataType: "json", success: function(response){ $("#helloworld").replaceWith(response); //alert(response); } }); })(jQuery); 直接从您的有效IWorkbenchPage找到ViewPart。

如果您有想要选择的对象,请访问View的网站,获取网站的选择提供商,然后告诉选择提供商应该选择什么(使用{{1}包含对象的实例)。这只适用于树或部件中的任何内容(您不必关心或知道它是树),实际上包含您要求它选择的对象。 / p>

答案 2 :(得分:0)

您需要使用以下方式查找视图:

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

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

然后,您可以将视图部件强制转换为视图类,并调用您在该类上编写的方法:

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

   myViewPart.getTreeViewer();
}

其中MyViewClass是您的ViewPart课程。您必须编写getTreeViewer方法。

如果视图当前未打开,您可以使用showView

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