[ImageJ-devel] Simple plugin discovery logic

Curtis Rueden ctrueden at wisc.edu
Mon Nov 22 17:52:11 CST 2010


Hi Grant et. al,

Today Rick & I added a simple plugin discovery mechanism to the ImageJ2
codebase. This is a work in progress. The idea is to have an interface,
PluginFinder, that provides a method, findPlugins(List<PluginEntry>
plugins), for populating a list with discovered plugins. The IJ1
compatibility layer can have an Ij1PluginFinder that discovers IJ1 plugins,
and the ImageJ2 code can have an Ij2PluginFinder (or whatever) for
discovering any additional plugins of various types.

Here is what we have so far:

In ij2-common:
  + imagej.plugin.PluginEntry -- very simple data structure for a single
plugin entry, including plugin class name, and associated menu entry
  + imagej.plugin.PluginFinder -- interface for anything capable of
discovering ImageJ plugins -- has one method: findPlugins(List<PluginEntry>
plugins)

In ij1-bridge:
  + imagej.ij1bridge.plugin.Ij1PluginFinder -- implementation for
discovering ImageJ 1.x plugins -- delegates to ij.Menus where possible

In ijx:
  + ijx.plugin.IjxPluginFinder -- currently a dummy implementation that just
populates a single fake plugin entry -- eventually will discover ImageJ 2.x
plugins

Tester class (in ijx):
  + ijx.plugin.PluginDiscovery -- obtains all implementations of
PluginFinder interface (using NB Lookup), discovers all available plugins
and prints out the list

Again, this is a work in progress. The goal is have a very simple,
encapsulated way of querying for plugins without any assumptions about GUIs,
etc. The PluginEntry in particular will need to be fleshed out with more
details—e.g., there is no way to express the arg string needed by many IJ1
plugins/commands, no way to link an image icon for use with a toolbar, and
no way to express order for menus or toolbars.

More later; comments welcome any time.

-Curtis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://imagej.net/pipermail/imagej-devel/attachments/20101122/8fad2745/attachment.html>


More information about the ImageJ-devel mailing list