【发布时间】:2023-04-03 19:12:01
【问题描述】:
我想制作一个动态应用程序,并且我想在加载另一个插件时在Tree 中添加TreeItem。
例如:
- 我有插件:
com.project.startup,这个插件有一个View,里面有一个Tree。这个 - 我有插件:
com.project.populator。我想在com.project.populator开始时从com.project.startup填充Tree
我知道如何添加项目,但我不知道何时何地必须编写代码。
到目前为止,我使用org.eclipse.ui.IStartup 执行此操作,但出现此错误:
!MESSAGE Unable to execute early startup code for an extension
!STACK 0
java.lang.NullPointerException
at ro.project.populator.TreePopulator.earlyStartup(TreePopulator.java:18)
我的代码如下所示:
public class TreePopulator implements IStartup
{
@Override
public void earlyStartup()
{
ViewMenuOffers viewMenuOffers = (ViewMenuOffers) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ViewMenuOffers.ID);
TreeViewer treeViewer = viewMenuOffers.getTreeViewer();
Tree tree = treeViewer.getTree();
TreeItem trtmItem = new TreeItem(tree, SWT.NONE);
trtmItem.setText("Item 1");
}
}
我认为 TreeViewer 未初始化.. 但它位于 ViewMenuOffers 的 createPartControl 中。
我怎样才能做到这一点?如何从另一个插件 onStartup 向 View 添加内容?
【问题讨论】:
-
您正在注册一个早期启动插件 - 无法保证您的
earlyStartup()方法会在工作台打开或有活动页面时被调用。您可以安排一个新的Job-JobManager将在工作台打开后立即启动,您可以在那里进行工作,这应该保证 UI 在您被调用时正在运行。 -
我正在做同样的事情,但使用了
job,现在我收到了这个错误:An internal error occurred during: "Visits: Populate menu". No context available outside of the request service lifecycle. -
查看 RAP 常见问题 -> wiki.eclipse.org/RAP/…
-
你能举个例子吗?我找不到任何...
-
@Tom Seidel 即使使用该解决方案也无法正常工作
标签: java eclipse-plugin eclipse-rcp eclipse-rap