我实现了一个e4 RCP应用程序,我想为特殊用户隐藏部件。
在e3中,我知道我可以通过实现IPerspectiveFactory的透视图类来完成这个任务。
我目前的解决办法是:
@PostConstruct
private void init(EPartService partService) {
MPart part = partService.findPart("part.id.activity");
partService.hidePart(part, true);
}我在part类中这样做,当我运行我的应用程序时,我得到了这个注解:
输入org.eclipse.e4.ui.workbench 4 0 2017-08-01 09:08:06.139!消息无法从包'135‘创建类'application.parts.activityPart.ActivityPart’!堆栈0 org.eclipse.e4.core.di.InjectionException:无法处理"ActivityPart#createComposite()":没有找到参数“复合”的实际值。在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)在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)在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$2org.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) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4889) ..。
发布于 2017-08-01 08:41:15
在部件初始化过程中,不要试图隐藏部件。
如果您知道您不想在应用程序启动期间显示某个部分,您可以在LifeCycle类中关闭它的“要呈现”标志。
例如:
@ProcessAdditions
public void processAdditions(MApplication app, EModelService modelService)
{
MUIElement el = modelService.find("part.id.activity", app);
if (el != null) {
el.setToBeRendered(false);
}
}https://stackoverflow.com/questions/45432518
复制相似问题