2017-08-01 139 views
0

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

在E3我知道我能做到这一点与实现IPerspectiveFactory透视类。

我现在sollution是:

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

我这样做的部分班级,当我跑我的应用程序得到这个injectionexcetion:

ENTRY org.eclipse.e4.ui。工作台4 0 2017-08-01 09:08:06.139 !MESSAGE无法从包裹'135'创建类'application.parts.activityPart.ActivityPart' !STACK 0 org.eclipse.e4.core.di.InjectionException :无法处理“ActivityPart#createComposite()”:没有实际值e被发现用于“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) 的组织。 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(ReflectionContributio nFactory.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) 在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) at 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) 的组织。 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) 在org.eclipse.e4.ui.services.internal.events.UIEventHandler $ 1.run(UIEventHandler.java:40) 在org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) 的组织。 eclipse.swt.widgets.Display.syncExec(Display.java:4889) ...

回答

1

在零件的初始化过程中不要试图隐藏零件。

如果你知道你不想显示应用程序中的一部分启动你可以关掉它“被渲染”标志在你的生命周期类。

例如:

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