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 も変更するということに当面はしたいと思います。

また、気が変わって実装しようと思うこともあるかもしれませんが... ^^;;