I want to make a dynamic application and I want to add TreeItem
's in a Tree
when another plugin is loaded.
For example:
com.project.startup
and this plugin has a View
with a Tree
inside it. This com.project.populator
. I want to populate the Tree
from com.project.startup
when com.project.populator
is startingI know how to add items but I don't know when and where I have to write my code.
So far I did this using org.eclipse.ui.IStartup
but I get this error:
!MESSAGE Unable to execute early startup code for an extension
!STACK 0
java.lang.NullPointerException
at ro.project.populator.TreePopulator.earlyStartup(TreePopulator.java:18)
My code looks like this:
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");
}
}
I think the TreeViewer is not initialized.. but it is in createPartControl
of ViewMenuOffers
.
How can I make this work? How can I add something to a View
from another plugin onStartup?
I found an answer. It can be done like this:
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");
}
});
}
}