我有一个编辑器可以为大纲提供两个不同的ContentOutlinePages,具体取决于用户的选择。
但是,当我更改要显示的ContentOutlinePage时,我必须关闭并重新打开“大纲视图”以查看任何更改。我知道大纲视图在激活编辑器时会请求新的ContentOutlinePage,但有没有办法强制它在任何其他时间请求新页面?
我试着打电话
activePage.activate(editor);
其中activePage是活动的工作台页面,编辑器是当前正在显示的编辑器,但是没有用。
答案 0 :(得分:1)
您可以拥有一个可以显示两个轮廓的页面,而不是拥有两个内容页面。要做到这一点,你不能扩展正常的ContentOutlinePage
,而是需要一个这样的类:
public class MyContentOutlinePage extends Page
implements IContentOutlinePage, ISelectionChangedListener
标准ContentOutlinePage
中的代码量非常小,因此实现满足您需求的页面并不需要额外的工作。
更新:
您将拥有一个包含SashForm和TreeViewer的顶级控件,并始终返回getControl()
中的顶部控件。您可以隐藏SashForm或TreeViewer,具体取决于您要显示的内容。
顶级控件可能类似于使用PageBook
的{{1}}或Composite
。