2012-03-05 13 views
0

動的アプリケーションを作成したいのですが、他のプラグインがロードされたときににTreeItemを追加します。例えばEclipse RCP、RAP、プラグインの別のビューからツリーを作成する方法

  1. 私はプラグインがありますcom.project.startupをし、このプラグインは内部TreeViewを持っています。この
  2. 私はプラグインを持っています: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が初期化されていないと思います..しかし、それはですcreatePartControlViewMenuOffers

どうすればこの作品を作成できますか?他のプラグインonStartupから何かをViewに追加するにはどうすればよいですか?

+3

初期起動プラグインを登録しています。ワークベンチが開いているか、アクティブなページがあるときに 'earlyStartup()'メソッドが呼び出されるという保証はありません。新しい「ジョブ」をスケジュールすることもできます。ワークベンチが開かれるとすぐに 'JobManager'が起動され、そこで作業を行うことができます。これにより、呼び出されたときにUIが実行されていることが保証されます。 –

+0

私は同じことをやっていますが、 'job'を使っていますが、今私はこのエラーを受け取ります:'内部のエラーが発生しました: "訪問:メニューを読み込む"。 リクエストサービスのライフサイクルの外でコンテキストを利用できません。 ' – Alex

+1

RAP FAQ - > http://wiki.eclipse.org/RAP/FAQ#No_context_available_outside_of_the_request_service_lifecycle –

答えて

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

      } 

     }); 

    } 

} 
関連する問題