2014-05-20 43 views
0

我正在为eclipse构建一个插件,它对当前在工作区中找到的项目执行一些静态分析。我有一个AbstractHandler的实现,在Eclipse中按下我的按钮时会调用execute方法。从插件修改Eclipse UI

一旦我的分析完成后,现在我想要一个新的文本窗口在Eclipse中打开,并输出分析结果。

我跟着vogella教程这里http://www.vogella.com/tutorials/EclipseJobs/article.html#eclipsejobs_uisynchronize 这也解释了,我需要注入UISynchronizer对象(或者说,日食将注入对我来说),并调用从处理程序asynch(Runnable)方法。然而,当我输入UISynchronizer,Eclipse中给出了警告:

Discouraged access: The type UISynchronizer is not accessible due to restriction on required library /Applications/eclipse/plugins/org.eclipse.ui.workbench_3.105.2.v20140211-1711.jar

这是阻止从使用UISynchronizer类普通用户?或者我应该使用不同的方法从我的处理程序更新UI?

回答

2

UISynchronizer适用于Eclipse e4风格的应用程序,因为您使用的是AbstractHandler,所以您必须编写Eclipse 3.x风格的插件,因此它不适合使用。

而是使用Display.asyncExec

Display.getDefault().asyncExec(runnable); 

其实,这是什么UISynchronizer内部使用。

为了记录,“不鼓励访问”警告是因为UISynchronizer接口尚未完成并可能发生变化。对于e4应用程序,这个警告可以被忽略。

更新:

检查再次E4类UISynchronizeUISynchronizer这是一个内部类,不应该使用的。

+0

我明白了,谢谢。我是eclipse插件开发新手,似乎正在使用e4和3.x样式的一部分。我想我应该解决这个问题! – ElFik