gpt4 book ai didi

java - 支持 eclipse e4 中 View 的多个实例

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

在 Eclipse 3.x 中,我们可以通过提供不同的辅助 ID 来打开 View 部件的多个实例。我怎样才能在 Eclipse 4 中实现相同的行为,我无法找到支持此行为的部分的任何属性。

另一个问题是我正在使用 compat 层将 3.x 应用程序迁移到 4.x,我已在应用程序模型中导入 3.x View ,并使用占位符将它们添加到透视图中。我的问题是,如果我打开同一 View 的第一个实例,它会在应用程序模型中定义的适当的 partsashcontainer 中打开,但之后如果我打开 View 的另一个实例,它会在透视的任何区域而不是定义的布局中打开?

如果我同时打开 View 的多个实例,如何强制 Eclipse 4 在一个布局区域中打开 View ?

最佳答案

解决方案是@greg-449建议的,我必须使用EpartService创建部件,然后将部件附加到partstack。由于我使用的是comapt层,所以它不是直接的,必须编写一些脏代码来实现:

                IEclipseContext serviceContext = E4Workbench
.getServiceContext();
final IEclipseContext appContext = (IEclipseContext) serviceContext
.getActiveChild();

EModelService modelService = appContext
.get(EModelService.class);
MApplication app = serviceContext.get(MApplication.class);
EPartService partService = serviceContext
.get(EPartService.class);
MPartStack stack = (MPartStack) modelService.find(
"partstack.2", app);
MPart part = modelService.createModelElement(MPart.class);
part.setElementId("viewID");
part.setContributionURI("bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView");
part.setCloseable(true);
part.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);

stack.getChildren().add(part); // Add part to stack
MPart viewPart = partService.showPart(part,
PartState.ACTIVATE); // Show part
ViewReference ref = ((WorkbenchPage) PlatformUI
.getWorkbench().getActiveWorkbenchWindow()
.getActivePage()).getViewReference(part);
IViewPart viewRef = ref.getView(true);

利用这个我们可以使用E4打开 View 并获取IViewpart的实例来执行3.X的其他操作

关于java - 支持 eclipse e4 中 View 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177029/

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