Paul,

You are probably correct in stating that an extension of the
AbstractPlugIn class may not be the most elegant solution for
supporting user-specific behavior in OpenJUMP. Perhaps I can explain a
little of the "bigger picture" that I am trying to accomplish. This
may help you understand why I had originally thought of using an
abstract plug-in extension.

I'm a proponent of keeping OpenJUMP's core very light, and of
encouraging developers to use plug-in to add functionality to
OpenJUMP. As a result, I plan on adding as much of my own new
functionality to OpenJUMP as I can via plug-ins.

I want to add some "infrastructure" to OpenJUMP that will make plug-in
development and management easier, and will improve cooperation among
plug-ins during runtime. I didn't want to impose these changes to the
plug-in infrastructure on other developers for a number of reasons.
(For one thing, this is still experiemental. I don't know how it will
work yet.)

The beauty of this situation is that I can use the existing plug-in
framework to create my plug-in infrastructure with very few
modifications to the core. Here is my basic concept:

I will design a plug-in for OpenJUMP called SurveyOSMain. I will also
design a subclass of the AbstractPlugIn class named a SurveyOSPlugIn.
The SurveyOSMain plug-in will provide services to any implementations
of the SurveyOSPlugIn class. Most of these implementations will be
written by myself, but they could be written by any plug-in developer
that also wanted to take advantage of the services offered by the
SurveyOSMain class.

So what are some of the services I want to offer through the SurveyOSMain class?

   - Installation, removal, and updating of SurveyOS plug-ins through
the   OpenJUMP GUI. (Developers of a SurveyOS Plug-In for OpenJUMP
will be required to create distributions of their plug-in that follow
a set folder structure. The SurveyOSMain plug-in will then copy
OpenJUMP libraries, SurveyOS libraries, plug-in specific libraries,
and extension JAR files to the appropriate locations during the
installation process. Execution of pre-installation scripts and post
installation scripts will also be supported.) I hope to eventually
support updates of SurveyOS OpenJUMP plug-ins over the web, as can be
done in Eclipse.

   - User management of plug-ins through the OpenJUMP GUI. Users will be able
to view which SurveyOS Plug-ins are currently installed. They will
also be able to view information about the date of the installation, a
description of the plug-ins functionality, plug-in dependencies, and
the current execution status of the plug-in.

   - Support for Plug-In dependency. Each SurveyOs Plug-In will know
what other SurveyOS Plug-Ins have been installed, and which plug-ins
have been successfully or unsucessfully intialized. They will be able
to access the public API of other SurveyOS plug-ins during runtime.

   - Support for configuration of SurveyOS Plug-In behavior. This
could be "global" behavior of all SurveyOS Plug-Ins that share common
functinoality (for example: snapping during feature editing
operations). It could be plug-in specific, or it might be user
specific. The SurveyOSPlugIn class will include the API needed to
store and retrieve these configuration settings so that it doesn't
have to be implemented by each plug-in developer.

   - Storage of project, task, organization, and user information that
can be accessed by SurveyOS plug-ins dealing with metadata
creation/editing or logging and reporting.

   - Support for implementation of Observer design patterns between
SurveyOS plug-ins. For example, each SurveyOS plug-in will broadcast
events that indicate when execution of the plug-in has begun, and when
it has completed.

In summary, I am hoping to create plug-in infrastructure for a
tightly-knit group of plug-ins. I hope to do this using a "mothership"
plug-in that follows the rules of the current plug-in system.

I don't think my system will be for everyone. OpenJUMp's current
plug-in system is fairly light-weight with few restrictions on the
plug-in developer. My plug-in system is heavier, with more
restrictions for the plug-in developer. The cost-benefit ratio won't
make sense for a lot of plug-in programmers, because the services
offered by SurveyOSMain won't be needed by a lot of plug-ins.

I welcome any comments you or the other programmers may have. If it
makes sense to have a "user-specific" configuration mechanism in the
core, I won't include it in SurveyOSMain.

The Sunburned Surveyor

On 11/2/07, Paul Austin <[EMAIL PROTECTED]> wrote:
> Hi Landon,
>
> I don't think you need to subclass the Abstract plugin in to do this.
>
> Looking at the problem there are a couple of things to think about. I'm
> going to use the concept of a workspace (think eclipse) for each of a user's
> different configurations of JUMP
>
>
> There will need to be some global settings for a user that's aren't specific
> to a workspace (such as the list of recent workspaces or a default
> workspace. Maybe the log4j configuration.
> There are settings that would be specific to workspaces, such as the
> settings saved from the PersistentBlackboard plug-in (workbench-state.xml)
> and the workbench configuration (workbench-properties.xml).
> So what is a workspace, a workspace is a directory with a bunch of files in
> it. Think of this as the configuration directory. When the JUMP starts up it
> can look at the settings in #1 for the user <user's home dir>/.openjump/
> directory. Then if they don't have a default workspace set they will be
> given the option to open or create a workspace. This would then set a
> property in the blackboard called OPEN_JUMP_WORKSPACE with a java.io.File to
> the workspace directory.
>
> Then if plug-ins want to get some configuration file or create one in the
> workspace they would use the OPEN_JUMP_WORKSPACE as the root directory for
> those files.
>
> This way plug-ins don't need to know about workspaces per-se just that there
> is a directory to put the configuration files into.
>
> Paul
>
>
> Sunburned Surveyor wrote:
> Thanks Uwe. I'm going to proceed with my "current user" functionality.
This
> will be included in a class that extends the JUMP AbstractPlugIn
class, so
> the functionality will be available to other plug-in
developers if they so
> choose.

I'll be trying to modify the Super Select tool so that
> the
configurations can be stored separately for different users using
> this
scenario. Look for it in an upcoming release of the plug-in.

The
> Sunburned Surveyor

On 11/2/07, Uwe Dalluege <[EMAIL PROTECTED]>
> wrote:

> Hi Landon,

if you are teaching OpenJUMP you have one installation
and lots
> of students using OpenJUMP over a network.
It would be very nice to have a
> plugIn
to configure the personal settings.

Regards

Uwe

Sunburned Surveyor
> schrieb:

> I'd like to know if anyone is using OpenJUMP in a situation where more
than
> one person would using an OpenJUMP installation on a single
computer. This
> might happen if OpenJUMP were being accessed over a
network, or if more than
> one person accessed a computer with OpenJUMP
installed to perform GIS
> tasks.

I'd like to know how common this scenario is because I am trying
> to
determine how useful it would be to design plug-ins for OpenJUMP
> that
maintain "current user information". This functionality would allow
you
> to store personalized tool configurations for each user and would
also be
> used to identify the user/organizatoin for logging and
metadata tools. (I
> don't intend to use the "current user information"
functionality to control
> or restrict access to data or functions in
OpenJUMP. That is a whole other
> can of worms and not my goal in this
case.)

Thanks,

The Sunburned
> Surveyor

-------------------------------------------------------------------------
This
> SF.net email is sponsored by: Splunk Inc.
Still grepping through log files
> to find problems? Stop.
Now Search log events and configuration files using
> AJAX and a browser.
Download your FREE copy of Splunk now >>
> http://get.splunk.com/
_______________________________________________
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: Splunk Inc.
Still grepping through log files
> to find problems? Stop.
Now Search log events and configuration files using
> AJAX and a browser.
Download your FREE copy of Splunk now >>
> http://get.splunk.com/
_______________________________________________
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: Splunk Inc.
Still grepping through log files
> to find problems? Stop.
Now Search log events and configuration files using
> AJAX and a browser.
Download your FREE copy of Splunk now >>
> http://get.splunk.com/
_______________________________________________
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: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> 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: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to