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) {
...