I can see the confusion I am causing already! :] I'm not worried about how OJ loads the plug-ins. Jon's code to automatically initialize PlugIn implementations found in lib/ext or any of its subdirectories works great. I was more concerned with helping the user manage the installation process. This is only needed if the plug-in doesn't contain just a single JAR.
Consider this folder structure example: lib ext surveyos super_select i18n The "super_select" folder contains the plug-in JAR and other files needed for my Super Select Tool plug-in. This includes a configuration file and I18N files stored in the "i18n" folder. I'd like to store future plug-ins I create in there own sub-folder of "surveyos". I'll put libraries that are depended on my more than one of my plug-ins in the "surveyos" folder. That way I don't pollute the main "lib" folder of OJ with libraries that are only used by my plug-ins. In theory, installation of one of my plug-ins could involve the following steps: - Copy the plug-in folder into the /lib/ext/surveyos folder. - Copy any new libraries used by the plug-in into the /lib/ext/surveyos folder. If the user has already installed plug-in 1 (that depends on "library a") I don't want him to reinstall "library a" it when he installs plug-in 2. What I really want is for the user to select from a list of my available plug-ins, and have an installer do the rest, including figure out the dependencies and copying folders to the correct OJ sub-folder. The Sunburned Surveyor On Mon, Nov 17, 2008 at 7:51 AM, P.Rizzi Ag.Mobilità Ambiente <[EMAIL PROTECTED]> wrote: > I may be mistaken, but I believe the plugin classloader of OJ > will load any .jar file it founds inside any ext subdirectory, > not only inside the ext directory itself. > So even if a plugin has a complex directory structure, what is > only needed is that its JARs are under ext somehow. > So: > ext/pippo/pluto/paperino/pippo.jar > > will work as good as: > ext/pippo.jar > > A different story may be for a plugin that needs DLLs or .so modules > or that has a complex configuration system, but in that case it may > have it's own installer... > > Something that may be useful for OJ would a simple system (via GUI > and/or configuration files) to specify several different directories > to look plugin for. This way one could put it's plugin JARs wherever > he wants in the filesystem and then tell OJ to load them like they > were inside the ext directory or to stop looking into that directory > to "remove" them. > > My 2 (Euro)cents. > > Bye > Paolo Rizzi > > >> -----Messaggio originale----- >> Da: Sunburned Surveyor [mailto:[EMAIL PROTECTED] >> Inviato: lunedì 17 novembre 2008 16.42 >> A: OpenJump develop and use >> Oggetto: Re: [JPP-Devel] Tool for installing, >> uninstalling,and removing >> OpenJUMP plug-ins. >> >> >> Stefan wrote: "For the external plugins they need to know only once >> that they need to >> drag and drop or remove jar files." >> >> This is only true with simple plug-ins. If your plug-in has its own >> folder structure and JAR dependencies, things can get a little more >> complex. >> >> Stefan wrote: "the problem with the external plugins would be that >> they need to support >> your interface - anything else wouldn't work." >> >> I don't think this is exactly accurate. When I first mentioned the >> tool I never planned on changing the current way of installing >> plug-ins. My goal was only to make things a little easier for the >> user. Also, as I mentioned to Larry, the tool could easily work with >> plug-in that don't implement the interface by copying them to the >> lib/ext directory. >> >> I'll give this some more thought. Please rest assured that I won't >> change anything in the core that affects how we currently install >> plug-ins. I will also give consideration to Larry's concern about >> confusing users on the plug-in installation. >> >> Landon >> >> On Sun, Nov 16, 2008 at 4:40 PM, Stefan Steiniger >> <[EMAIL PROTECTED]> wrote: >> > mhm.. basically I agree with Larry right now. People can >> get confused. >> > >> > . For the external plugins they need to know only once that >> they need to >> > drag and drop or remove jar files >> > . For the internal plugins with have now the >> default-plugins.xml file >> > >> > the problem with the external plugins would be that they >> need to support >> > your interface - anything else wouldn't work. >> > >> > btw. on the issue with the extension download tool: the >> problem was, so >> > I believe, related to the use and unpacking of zip files??? >> > >> > stefan >> > >> > Sunburned Surveyor schrieb: >> >> Michael, >> >> >> >> You wrote: "...discovering new plugins in the project >> repository and >> >> downloading/updating them seems more useful than a local installer, >> >> that's why I misunderstood Landon's proposal when I read it." >> >> >> >> That was one of the ideas I had when I was thinking of the update >> >> method in the PlugInHandler interface. The method could >> check a file >> >> on a web server to see if new versions of a plug-in were available. >> >> I'd imagine the same mechanism could be used to discover >> new plug-ins. >> >> This would work similar to Eclipse. >> >> >> >> I always consider Larry's comments carefully, so I will >> think on what >> >> he said. Perhaps there is a solution that won't confuse the users. >> >> >> >> Please remember I'm not talking about anything that would >> be forced on >> >> OJ programmers. It would just be a tool that could be used if >> >> programmers were interested. >> >> >> >> SS >> >> >> >> On Fri, Nov 14, 2008 at 2:49 PM, Michael Michaud >> >> <[EMAIL PROTECTED]> wrote: >> >>> Stefan Steiniger a écrit : >> >>>> there has been an extension manager, but this one was rather for >> >>>> downloading available plugins. the code is still there, >> but could be >> >>>> that the plugin needs to be activated (in the xml file) >> >>>> >> >>> Yes, that's it. >> >>> Larry says he had some problems with this plugin. >> >>> but IMHO, discovering new plugins in the project repository and >> >>> downloading/updating them seems more useful than a local >> installer, >> >>> that's why I misunderstood Landon's proposal when I read it. >> >>> >> >>> Michaël >> >>>> stefan >> >>>> >> >>>> Michael Michaud schrieb: >> >>>> >> >>>>> Hi, >> >>>>> >> >>>>> There used to be a plugin manager in the menu, but I >> cannot find it anymore. >> >>>>> It was from lat/lon if I remember correctly, but I'm >> not sure it has >> >>>>> ever been used the project's plugin. >> >>>>> Anyone remember ? >> >>>>> >> >>>>> Michaël >> >>>>> >> >>>>> Sunburned Surveyor a écrit : >> >>>>> >> >>>>>> I've got about four plug-ins that I hope to release in >> January. This >> >>>>>> includes my reader for GPX files, the latest edition >> of the Super >> >>>>>> Select Tool, and a couple of Layer Utilities plug-ins. >> >>>>>> >> >>>>>> Some of these are simple plug-ins with a single Jar and no >> >>>>>> dependencies. So you can just drop them into the /ext folder of >> >>>>>> OpenJUMP. Other of my plug-ins, like the Super Select >> Tool and the GPX >> >>>>>> Reader, depend on external libraries and have I18N and >> configuration >> >>>>>> files. I had cooked up part of an installer for the >> Super Select Tool >> >>>>>> when I got to thinking that it might be nice to have a >> tool that could >> >>>>>> be used to install, uninstall, and update plug-ins for >> OJ. It wouldn't >> >>>>>> have to be a part of OJ, it could even run as a >> separate executable. >> >>>>>> >> >>>>>> I was thinking of this simple interface: >> >>>>>> >> >>>>>> public interface PlugInHandler >> >>>>>> { >> >>>>>> public abstract void installPlugIn(File argOpenJumpFolder); >> >>>>>> >> >>>>>> public abstract void uninstallPlugIn(boolean >> argRemoveSharedLibraries); >> >>>>>> >> >>>>>> public abstract void updatePlugIn(); >> >>>>>> } >> >>>>>> >> >>>>>> I was thinking of another interface that could be used by >> >>>>>> PlugInHandler.installPlugIn method implementations to >> show a standard >> >>>>>> GUI to the user during plug-in installation/update: >> >>>>>> >> >>>>>> public class PlugInInstallerGuiProvider >> >>>>>> { >> >>>>>> public abstract JPanel getLicensePanel(); >> >>>>>> >> >>>>>> public abstract JPanel getInstallConfigurationPanel(); >> >>>>>> >> >>>>>> public abstract JPanel getAboutPanel(); >> >>>>>> } >> >>>>>> >> >>>>>> I thought a library providing these interfaces and some default >> >>>>>> implementations might help us standardize plug-in >> management and make >> >>>>>> the process of installing and removing plug-ins a >> little easier on the >> >>>>>> end user. >> >>>>>> >> >>>>>> Do you guys have any comments on this? >> >>>>>> >> >>>>>> The Sunburned Surveyor >> > >> > >> -------------------------------------------------------------- >> ----------- >> > This SF.Net email is sponsored by the Moblin Your Move >> Developer's challenge >> > Build the coolest Linux based applications with Moblin SDK >> & win great prizes >> > Grand prize is a trip for two to an Open Source event >> anywhere in the world >> > http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> > _______________________________________________ >> > Jump-pilot-devel mailing list >> > Jump-pilot-devel@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel >> > >> >> -------------------------------------------------------------- >> ----------- >> This SF.Net email is sponsored by the Moblin Your Move >> Developer's challenge >> Build the coolest Linux based applications with Moblin SDK & >> win great prizes >> Grand prize is a trip for two to an Open Source event >> anywhere in the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> Jump-pilot-devel mailing list >> Jump-pilot-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel >> > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Jump-pilot-devel mailing list > Jump-pilot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel