0

我想制作一个动态应用程序,并且我想在加载另一个插件时添加TreeItem's 。Tree

例如:

  1. 我有插件:com.project.startup这个插件里面有View一个Tree。这
  2. 我有插件:com.project.populator. 我想填充Treecom.project.startup何时com.project.populator开始

我知道如何添加项目,但我不知道何时何地必须编写代码。

到目前为止,我使用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 没有初始化.. 但它createPartControlViewMenuOffers.

我怎样才能使这项工作?如何View从另一个插件 onStartup 添加一些东西?

4

1 回答 1

2

我找到了答案。可以这样做:

public class TreePopulator implements IStartup
{

    @Override
    public void earlyStartup()
    {
        PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {

            @Override
            public void run()
            {
                ViewMenuOffers viewMenuOffers = (ViewMenuOffers) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ViewMenuOffers.ID);
                TreeViewer treeViewer = viewMenuOffers.getTreeViewer();
                Tree tree = treeViewer.getTree();

                TreeItem trtmS = new TreeItem(tree, SWT.NONE);
                trtmS.setText("Test");

            }

        });

    }

}
于 2012-03-06T12:02:27.463 回答