Eclipse RCP, RAP, как заполнить дерево из другого вида загруженного плагина - PullRequest
0 голосов
/ 06 марта 2012

Я хочу создать динамическое приложение и добавить TreeItem в Tree при загрузке другого плагина.

Например:

  1. Iесть плагин: com.project.startup и этот плагин имеет View с Tree внутри.Это
  2. У меня есть плагин: com.project.populator.Я хочу заполнить Tree из com.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 неинициализирован .. но он находится в createPartControl из ViewMenuOffers.

Как я могу сделать эту работу?Как я могу добавить что-то в View из другого плагина при запуске?

1 Ответ

2 голосов
/ 06 марта 2012

Я нашел ответ.Это можно сделать так:

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");

            }

        });

    }

}
...