【问题标题】:RCP e4 hide partsRCP e4 隐藏部件
【发布时间】:2017-08-01 08:19:15
【问题描述】:

我实现了一个 e4 RCP 应用程序,我想为特殊用户隐藏部分。

在 e3 中,我知道我可以使用实现 IPerspectiveFactory 的透视类来做到这一点。

我目前的解决方案是:

@PostConstruct
private void init(EPartService partService) {
    MPart part = partService.findPart("part.id.activity");
    partService.hidePart(part, true);
}

我在零件类中执行此操作,当我运行我的应用程序时,我得到了这个 injectionexcetion:

!ENTRY org.eclipse.e4.ui.workbench 4 0 2017-08-01 09:08:06.139 !MESSAGE 无法从包“135”创建类“application.parts.activityPart.ActivityPart” !堆栈 0 org.eclipse.e4.core.di.InjectionException:无法处理“ActivityPart#createComposite()”:未找到参数“Composite”的实际值。 在 org.eclipse.e4.core.internal.di.InjectorImpl.reportUnresolvedArgument(InjectorImpl.java:476) 在 org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:987) 在 org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) 在 org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399) 在 org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318) 在 org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) 在 org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105) 在 org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74) 在 org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56) 在 org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129) 在 org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:997) 在 org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:666) 在 org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) 在 org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) 在 org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) 在 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 在 org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) 在 org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1289) 在 org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.lambda$0(LazyStackRenderer.java:68) 在 org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40) 在 org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) 在 org.eclipse.swt.widgets.Display.syncExec(Display.java:4889) ...

【问题讨论】:

    标签: java eclipse-rcp e4


    【解决方案1】:

    在零件初始化期间不要试图隐藏零件。

    如果您知道不想在应用程序启动期间显示某个部件,您可以在 LifeCycle 类中关闭其“待渲染”标志。

    例如:

    @ProcessAdditions
    public void processAdditions(MApplication app, EModelService modelService)
    {
      MUIElement el = modelService.find("part.id.activity", app);
      if (el != null) {
        el.setToBeRendered(false);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多