Java 如何从超类为查看器注册selectionProvider

Java 如何从超类为查看器注册selectionProvider,java,eclipse,eclipse-rcp,Java,Eclipse,Eclipse Rcp,我有一个视图扩展了另一个插件提供的视图,如下所示: public class View2 extends some.other.package.View1 { public void createPartControl(Composite parent) { super.createPartControl(parent); //I want to do this, but I can't because its private

我有一个视图扩展了另一个插件提供的视图,如下所示:

public class View2 extends some.other.package.View1
{
    public void createPartControl(Composite parent) 
    {  
        super.createPartControl(parent);  
        //I want to do this, but I can't because its private  
        //getSite().setSelectionProvider(treeViewer);  
    }  
}  
但是我不能编辑超类,所以我需要从控件访问查看器

public class some.other.package.View1 extends ViewPart
{  
    private TreeViewer treeViewer;  
    public void createPartControl(Composite parent) {  
        treeViewer = new TreeViewer(parent, SWT.V_SCROLL);  
    }  
}  
我尝试使用
parent.getChildren()
获取一个
对象,但我看不出它可以根据需要强制成为
iSelectProvider

您是否尝试过,如:

你有没有试过,比如:


是不是有什么东西可以让你得到这棵树?
无论如何,如果没有,那么我想到的唯一方法就是使用反射。

难道没有什么可以让你得到这个Treeviewer的getter吗?
无论如何,如果没有,那么我想到的唯一方法就是使用反射。

有一个在IViewSite中传递的init方法,您可以在其上设置选择提供程序(从IWorkbenchPartSite继承)。

有一个在IViewSite中传递的init方法,您可以在其上设置选择提供程序(继承自IWorkbenchPartSite).

站点的selectionProvider为空,因为超类没有将查看器注册为selectionProvider-事实上,这就是我扩展该类的原因,因此我可以将查看器添加为selectionProvider,并在其他视图对象中使用所选对象…站点的selectionProvider为空,因为超类ss没有将查看器注册为selectionProvider-事实上,这就是我扩展该类的原因,因此我可以将查看器添加为selectionProvider,并在其他视图对象中使用选定的对象。。。
ISelectionProvider provider = site.getSelectionProvider();
if (provider instanceof TreeViewer) {
   ...