We need a generic preferences system for all the various user preferences that we are setting up.
Ideally it would have the following features:
- Nicely laid out dialog box allowing user to change all preferences available from a Cytoscape window menu
- Generic API support for plugin writers to register and read preferences.
- Support to write all preferences to a file (we already have most of this)
- Support for local (specific to a project) and global (general for Cytoscape) preferences
- Automatic mapping of preferences from command line through preferences API, so once a preference is defined, it is available via the command line.
So there would be 4 ways of setting preferences (API, dialog, command line, preferences file). All preferences that we use should be registered via this API to avoid problems of duplicated preferences and clashing command line options. A plugin does not have to use this API if they are not interested in using the dialog, file and/or command line options, but rather want to have options settable only within the plugin (this will probably be the case for a number of plugins).
MikeSmoot: I wonder if the Jakarta Configuration package might fill the bill? Perhaps combine this with the CLI package to get the desired command line behavior? I hate re-inventing the wheel.