gpt4 book ai didi

java - RCP e4 隐藏零件

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

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

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

我当前的解决方案是:

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

我在零件类中执行此操作,当我运行我的应用程序时,我得到这个注入(inject)异常:

!ENTRY org.eclipse.e4.ui.workbench 4 0 2017-08-01 09:08:06.139 !MESSAGE Unable to create class 'application.parts.activityPart.ActivityPart' from bundle '135' !STACK 0 org.eclipse.e4.core.di.InjectionException: Unable to process "ActivityPart#createComposite()": no actual value was found for the argument "Composite". at org.eclipse.e4.core.internal.di.InjectorImpl.reportUnresolvedArgument(InjectorImpl.java:476) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:987) at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399) at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318) at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56) at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:997) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:666) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1289) at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.lambda$0(LazyStackRenderer.java:68) at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4889) ...

最佳答案

不要在部件初始化期间尝试隐藏部件。

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

例如:

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

关于java - RCP e4 隐藏零件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45432518/

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