0

どうにかして、アクティベーターの選択サービスに関する参照を取得する必要があります。私はこれを試しました:

IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow ww = wb.getActiveWorkbenchWindow();
ww.getSelectionService().addSelectionListener(new GlobalSelectionListener());

しかしww、常にnullです。選択サービスの参照を取得するための別のコードが見つかりませんでした。このコードは、Eclepse が完全に初期化されている場合にのみ機能します。

4

1 に答える 1

0

null 以外の戻り値を取得するには、ディスプレイ スレッドで getActiveWorkbenchWindow() を呼び出していることを確認する必要があります。

試す:

final IWorkbench workbench = PlatformUI.getWorkbench();
workbench.getDisplay().asyncExec(new Runnable() {
  public void run() {
    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
    if (window != null) {
      // do something
    }
  }
});

その例は、org.eclipse.ui.IStartup の javadoc からのものです。ワークベンチが初期化された後、できるだけ早くコードを実行したい場合は、org.eclipse.ui.startup拡張ポイントを拡張することを検討してください。

于 2012-06-23T00:34:57.360 に答える