How do you give the part containing a ContentOutlineView focus correctly when clicking on the TreeViewer
?
I am creating my own Outline like view and when clicking on the TreeViewer
in a ContentOutlinePage
when the (view)part is not in focus does not correctly fire selection events. I need to click on the tab to bring the part into focus before the TreeViewer
's selection events fire.
I have created my own FooBarOutlineView
that extends PageBookView
. I am creating pages only for FooBarModelView
parts and instantiating either a FooOutlinePage
or a BarOutlinePage
that extends ContentOutlinePage
My BarOutlinePage
overloads the createControl method to add a content provider to the 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");
}
}
My FooBarOutlineView
(trimmed for brevity) looks like:
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);
}
}
Any insights warmly welcomed!