LG3DHOME が変更されたらどうするか その 2
IJavaProject の取り方は分かりました。
IProject や IJavaProject は IWorkbenchWindows に結びつけられているんですね。window が IWorkbenchWindows だとすると次のようなコードで IProject や IJavaProject が取得できるようです。
ISelection selection= window.getSelectionService().getSelection(); if (selection instanceof IStructuredSelection) { Object project = ((IStructuredSelection)selection).getFirstElement(); }
この project が IProject オブジェクトもしくは IJavaProject オブジェクトになるようです。
後はこの IWorkbenchWindows オブジェクトをどのように取得するかです。Tomcat Plug-in だと、また internal な JavaPlugin というクラスを使っているので、他の手法を探してみました。Javadoc みれば一目瞭然だったんですけどね。
IWorkbenchWindow window= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
このコードだと現在アクティブになっているワークベンチが取得できるようです。逆にいえば、アクティブなものがなければ null が帰ってきました。
すべてのワークベンチを取得するには IWorkbenchWindow#getWorkbenchWindows() メソッドを使用するようです。
で、ここまで分かったのですけど、やっぱりこの機能を実装するのはやめようと思います。なんかおせっかいすぎるような気がしてきました。
LG3DHOME を変更する場合は、自己責任で CLASSPATH も変更するということに当面はしたいと思います。
また、気が変わって実装しようと思うこともあるかもしれませんが... ^^;;