As I have done the following tutorials:

http://www.vogella.com/tutorials/EclipseRCP/article.html

http://www.vogella.com/tutorials/EclipseJFaceTable/article.html

http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html

I wanted to combine the JFace table viewer (plugin from 2nd and 3rd tutorial) and the ToDo application from the first tutorial. In the JFace table example(s) there is a View extended from a ViewPart. In this the call:

getSite().setSelectionProvider(view)

inside the createPartControl method is fine and works.

But when I do the same in the other tutorial it does not work, I get a NullPointerException. The first article creates a plugin and then transform it using features and products into an Eclipse 4 application. So the classes in the application are not derived from a 'Part'. They are referenced using the application model and only use the annotation @PostConstruct.

Why is it that I get this NullPointerException? And really, how can I get the SelectionProvider service linked to the Workbench?

I also tried to use PlatformUI.getWorkbench() but it says that the workbench does not yet exist.

Any help highly appreciated.

Thanks.

有帮助吗?

解决方案

Eclipse 4 (e4) applications are completely different from traditional Eclipse 3.x style applications.

In an e4 application you cannot use a lot of things that are used in a Eclipse 3.x application - so you need to check which style the example you are using is based on. The e4 application has access to a lot of new features that are not available in a 3.x application.

In an e4 application you inject the ESelectionService to get and set the current selection.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top