I had some more thoughts this evening on supporting Plug-In Dependencies. In the system I described in my last blog post participation of a plug-in in the dependency system could be totally voluntary. We could require that participating plug-ins add themselves to a list or collection of participating plug-ins stored in OpenJUMP. They could do this from within their initialization() method.
I also realized that passing an event with simply a list of the loaded plug-ins to the plugInsIntializationCompleted() method will not be sufficient. We will acutally need to pass a reference to each participating plug-in so the plug-ins that depend on them can obtain a reference to the instance object representing the plug-in on which they depend. It doesn't do much good to have a dependency system if plug-ins can access the public methods of the other plug-ins on which they depend.
The Sunburned Surveyor