如何在点击TreeViewer
时正确地为包含ContentOutlineView的部分提供焦点?
我正在创建自己的大纲视图,当(视图)部分未对焦时单击TreeViewer
中的ContentOutlinePage
时,无法正确触发选择事件。在TreeViewer
的选择事件开始之前,我需要点击标签以使部件成为焦点。
我创建了自己的FooBarOutlineView
,扩展了PageBookView
。我只为FooBarModelView
个部分创建网页,并实例化FooOutlinePage
或BarOutlinePage
扩展ContentOutlinePage
我的BarOutlinePage
重载了createControl方法,将内容提供程序添加到TreeViewer
:
public class BarOutlinePage extends ContentOutlinePage {
@Override
public void createControl(Composite parent) {
super.createControl(parent);
getTreeViewer().setContentProvider(new MyContentProvider(new MyTreeModel()));
getTreeViewer().setLabelProvider(new MyViewLabelProvider());
getTreeViewer().setInput("root");
}
}
我的FooBarOutlineView
(为简洁而修剪)看起来像:
public class FooBarOutlineView extends PageBookView {
@Override
protected IPage createDefaultPage(PageBook book) {
MessagePage defaultPage = new MessagePage();
initPage(defaultPage);
defaultPage.setMessage("An outline is not available. (default page)");
defaultPage.createControl(book);
return defaultPage;
}
@Override
protected PageRec doCreatePage(IWorkbenchPart part) {
IPageBookViewPage page = null;
if (part instanceof FooModelView)
page = new FooOutlinePage();
else if (part instanceof BarModelView)
page = new BarOutlinePage();
initPage(page);
page.createControl(getPageBook());
return new PageRec(part, page);
}
@Override
protected boolean isImportant(IWorkbenchPart part) {
return (part instanceof FooBarModelView);
}
}
热烈欢迎任何见解!
答案 0 :(得分:0)
普通的ContentOutline
类在FooBarOutlineView
中使用了我认为您需要的方法覆盖:
public void partBroughtToTop(IWorkbenchPart part) {
partActivated(part);
}