gpt4 book ai didi

java - 如何以编程方式从另一个 View 或处理程序添加和定位新的 ViewPart?

转载 作者:行者123 更新时间:2023-12-01 17:17:08 25 4
gpt4 key购买 nike

我知道我可以通过 plugin.xml 创建新 View 。我还可以通过 IPerpspectiveFactory.createInitialLayout(IPageLayout) 使用如下代码创建新 View

layout.addView(ChatView.ID, IPageLayout.LEFT, 1.0f, editorArea);

是否可以通过命令从另一个 View 执行相同的操作?

而且我的 View 不是单例的,所以我希望创建 View 副本。

不幸的是,使用类似的代码

HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(viewId);

我无法在布局中定义 View 位置。我想将所有新 View 传递到布局文件夹。

更新

我已按以下方式修改了透视代码:

public void createInitialLayout(IPageLayout layout) {

String editorArea = layout.getEditorArea();

layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM, 0.75f, editorArea);

layout.addView(CoreSettingsView.ID, IPageLayout.LEFT, 0.25f, editorArea);

//layout.addView(ChatView.ID, IPageLayout.LEFT, 1.0f, editorArea);

IFolderLayout folder = layout.createFolder("chatfolder", IPageLayout.LEFT, 1.0f, editorArea);
folder.addPlaceholder(ChatView.ID);
}

之前的注释行导致聊天 View 出现在透视图的“主”区域中。

现在我根据建议将其更改为在同一位置放置占位符。

handler的执行代码如下:

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
try {
ChatView chatView = (ChatView) HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(
ChatView.ID,
Integer.toString(counter++),
IWorkbenchPage.VIEW_ACTIVATE);

} catch (PartInitException e) {
e.printStackTrace();
}
return event;
}

这会导致新 View 出现,但它们都出现在与控制台 View 所在的位置相同的位置。 IE。不是直接定位时出现的那个地方。

为什么?

更新2

这是关于占位符如何发生的图片。红色箭头显示按下绿色按钮时新 View 实际出现的位置。蓝色箭头显示 View 应该出现的位置以及它(一个实例)在透视中显式定位时实际出现的位置:

enter image description here

更新3

以下工作有效:

    IFolderLayout folder = layout.createFolder("chatfolder", IPageLayout.LEFT, 1.0f, editorArea);
folder.addPlaceholder(ChatView.ID + ":*");

尽管 0.95f 被认为是最大值,但我还是使用了 1.0f。如果我使用 0.95f,则不会占用全部区域。

最佳答案

您可以在创建初始布局时添加占位符。之后,从其他 View 中,您只需显示您想要显示的 View 。它将出现在它的占位符中。

See 9.2 Perspective

关于java - 如何以编程方式从另一个 View 或处理程序添加和定位新的 ViewPart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21221863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com