【问题标题】:How to open another Part in Eclipse e4如何在 Eclipse e4 中打开另一个部件
【发布时间】:2014-11-03 23:21:06
【问题描述】:

我正在开发一个 e4 应用程序。最初我有 A 部分。我在应用程序启动时显示 A 部分,而 B 部分不可见。在 A 部分中,我将显示带有链接的 HTML 页面。当用户单击任何链接时,我需要打开它的另一个部分,B。这两个部分将同时可见,就像 Windows 的 Tile Windows Vertically 一样。如何做到这一点?

【问题讨论】:

  • 我正在使用@Inject EPartService partService; MPart mpart=partService.findPart("in.airinfotech.bhcr.part.bareact"); mpart.setVisible(true); partService.showPart(mpart,PartState.CREATE);但是 partService 引用正在获取空值并获取 NPE 异常我也尝试了 MyClass myClass = ContextInjectionFactory.make(MyClass.class, context);我出了点问题

标签: eclipse rcp e4


【解决方案1】:

如果您的应用程序模型中有部件定义,您可以使用EPartService

@Inject EPartService partService;

partService.showPart("part id", PartState.ACTIVATE);

这将打开您在应用程序模型中放置的任何部分。如果您不希望最初显示的部件关闭部件的应用程序模型条目中的“待渲染”标志。

或者,您可以从“零件描述符”创建零件

MPart part = partService.createPart("part descriptor id");

在这种情况下,您需要将零件添加到您的零件堆栈之一,然后显示它:

@Inject EModelService modelService;

@Inject MApplication app;

MPartStack partStack = (MPartStack)modelService.find("part stack id", app);

partStack.getChildren().add(part);

partService.showPart(part, PartState.ACTIVATE);

【讨论】:

  • 当我想显示部件时,我将关闭“待渲染”标志和可见标志,我将使用 public class PartShow { @Inject EPartService partservice; public void show(){ try{ MPart mpart=partservice.findPart("com.abc.test.part.mypart"); //空指针错误 partservice=null mpart.setVisible(true); partservice.showPart(mpart, PartState.CREATE); }catch(Exception ex){ ex.printStackTrace(); } } } 但它给出了空指针错误
  • 不要关闭可见标志。直接注入仅对从应用程序模型创建的对象执行 - 请参阅 stackoverflow.com/q/25759291/2670892 了解如何创建注入的对象。
  • EPartService partservice=context.get(EPartService.class);这给出错误 java.lang.IllegalStateException:应用程序没有活动窗口
  • ContextInjectionFactory.inject(PartShow .class,context); MPart mpart=partService.findPart("com.abc.test.part.mypart"); partService.showPart(mpart, PartState.CREATE);但它会给出一个 NPE 错误
  • thanks greg-449 你可以告诉我注入 EPartService 或 IEclipseContext 出了什么问题,我都试过了,但仍然没有得到任何解决方案。在 Eclipse 3.7 中,我使用 PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("view id",null , IWorkbenchPage.VIEW_CREATE) ;但我的代码中的主要问题不是为 ex 注入 EPartService。 @Inject EPartService 部分服务;部分服务参考是显示空值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 2015-01-20
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 2021-03-19
相关资源
最近更新 更多