EMenuService.registerContextMenu causes NullPointerException [message #1732004] |
Wed, 11 May 2016 15:22 |
Elias Vasylenko Messages: 19 Registered: December 2015 |
Junior Member |
|
|
I have a TreeCell implementation something like the following:
@Creatable
public class ExampleTreeCell extends TreeCell<TreeItemData<?>> {
private static String CONTEXT_MENU_ID = "blah.blah.blah.example";
@PostConstruct
void initialise(EMenuService menuService, @LocalInstance FXMLLoader loader) throws IOException {
loader.setLocation(location());
loader.setRoot(this);
loader.setController(this);
loader.load();
menuService.registerContextMenu(this, CONTEXT_MENU_ID);
}
/*
* ...
*/
}
Where instances are created elsewhere via a "javax.inject.Provider<ExampleTreeCell>" injection.
This works fine for an empty popup menu, it comes up on the screen on right click so I know it's attached to a valid component and stuff.
The problem occurs when I add a handled menu item to the e4 model, after which injection fails with a null pointer exception:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at org.eclipse.fx.ui.workbench.renderers.base.BaseMenuItemRenderer.initWidget(BaseMenuItemRenderer.java:63)
at org.eclipse.fx.ui.workbench.renderers.base.BaseMenuItemRenderer.initWidget(BaseMenuItemRenderer.java:1)
at org.eclipse.fx.ui.workbench.renderers.base.BaseRenderer.createWidget(BaseRenderer.java:189)
at org.eclipse.fx.ui.workbench.renderers.base.BaseRenderer.createWidget(BaseRenderer.java:1)
at org.eclipse.fx.ui.workbench.fx.PartRenderingEngine.createWidget(PartRenderingEngine.java:277)
at org.eclipse.fx.ui.workbench.fx.PartRenderingEngine.createGui(PartRenderingEngine.java:241)
at org.eclipse.fx.ui.workbench.fx.PartRenderingEngine.createGui(PartRenderingEngine.java:323)
at org.eclipse.fx.ui.workbench.renderers.base.BaseRenderer.engineCreateWidget(BaseRenderer.java:619)
at org.eclipse.fx.ui.workbench.renderers.base.BasePopupMenuRenderer.doProcessContent(BasePopupMenuRenderer.java:191)
at org.eclipse.fx.ui.workbench.renderers.base.BasePopupMenuRenderer.doProcessContent(BasePopupMenuRenderer.java:1)
at org.eclipse.fx.ui.workbench.renderers.base.BaseRenderer.processContent(BaseRenderer.java:713)
at org.eclipse.fx.ui.workbench.fx.PartRenderingEngine.createGui(PartRenderingEngine.java:244)
at org.eclipse.fx.ui.workbench.fx.PartRenderingEngine.createGui(PartRenderingEngine.java:323)
at org.eclipse.fx.ui.workbench.renderers.fx.internal.PartPopupMenuServiceImpl.registerMenu(PartPopupMenuServiceImpl.java:59)
at org.eclipse.fx.ui.workbench.renderers.fx.internal.PartPopupMenuServiceImpl.registerContextMenu(PartPopupMenuServiceImpl.java:41)
at uk.co.strangeskies.eclipse.E4TreeItemType.configureCell(E4TreeItemType.java:49)
at ... (not sure if more is useful)
I've tried a few different ways of reorganising it, e.g. to construct ExampleTreeCell manually rather than making it @Creatable and then having the containing Part itself register the context menu to it. I always end up with that null pointer exception, with no EBindingService instance found in the model context of the menu item renderer.
I have no clue what I'm doing wrong here, any pointers would be appreciated.
[Updated on: Tue, 28 June 2016 08:42] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03903 seconds