我有一个自定义的perspecitve,只在plugin.xml中声明了一个编辑器区域。 另外,我得到了一个自定义视图,以编程方式打开。我想用编辑器区域堆叠这个视图。 如果我在透视扩展中将其设置为最初可见,则一切正常。
<view
id="my.viewID"
minimized="false"
relationship="stack"
relative="org.eclipse.ui.editorss"
visible="false">
</view>
但是,如果我设置visible="false"
,并使用以下代码以编程方式打开它,它始终显示在与ConsoleView堆叠的底部区域。
IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.showView("my.viewID", "secondID", IWorkbenchPage.VIEW_ACTIVATE);
当以编程方式打开时,是否有人知道如何将初始隐形视图堆叠到编辑器区域?
我已经尝试了此主题中给出的建议,但没有取得任何成功:Eclipse RCP - relative field of view perspective extension not working
答案 0 :(得分:3)
有时你无法想象解决方案有多简单:
只需在plugin.xml中的视图ID末尾添加:*
即可解决此问题:
<view
id="my.viewID:*"
minimized="false"
relationship="stack"
relative="org.eclipse.ui.editorss"
visible="false">
</view>
令人难以置信的是,你发现有多少人说这根本不可能......
答案 1 :(得分:2)
好吧,我已经阅读了关于在编辑器区域放置视图的大部分内容,但没有一个工作。上面的答案1导致plugin.xml出现警告。在Eclipse Luna中,这可以在您的透视图初始化时起作用:
public void createInitialLayout(IPageLayout layout) {
if ( layout instanceof org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout ) {
org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout layout4=(org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout)layout;
layout4.stackView(ID+":*",layout.getEditorArea(),false);
}
...
上面的代码添加了一个带有&#34; ID&#34;的视图。这是一个多视图,添加到隐藏的编辑器堆栈中(最后一个参数是假=&#34;不可见&#34;)。
它也可以与其他Eclipse版本一起使用,但我还没有尝试过。
祝你好运!答案 2 :(得分:0)
实现此目的最简单的方法是将视图添加到透视图扩展中,如下所示:
<extension point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension targetID="org.my.perspective">
<view id="org.my.view"
minimized="false"
relationship="stack"
relative="org.eclipse.ui.editorss"
visible="false">
</view>
</perspectiveExtension>
</extension>
然后在没有辅助 ID 的情况下调用 IWorkbenchPage::showView()
,即只有这样的一个参数:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.my.view");