What is this project good for?
Module is an implementation of editor/settings API. It creates a storage support of the settings.
Describe the overall architecture.
It is a module located under /cvs/editor/settings/storage directory.
It consists of
Editor Settings Storage module defines EditorSettingsStorageAPI.
API contains abstract classes, responsible for particular editor settings:
FontColorSettings - Fonts and Colors settings are represented by map of
key=<String>fonts and colors syntax name and value=AttributeSet. The class implements FontColorSettings from editor/settings module and adds the setters support.
KeyBindingSettings - Key bindings settings
are represented by List of MultiKeyBindings. The class implements KeyBindingSettings from editor/settings module and adds the
support of setters.
EditorSettings - contains various utilities methods for font color schemes, key maps.
The Javadoc documentation can be generated by using
Describe the main
use cases of the new API. Who will use it under
what circumstances? What kind of code would typically need to be written
to use the module?
New Options Dialog
Editor settings storage friend API infrastructure is used mainly by new options dialog module.
There is also a usage in editor module to provide binding between new options dialog and editor
module. New options dialog is responsible for updating and setting
the settings/storage values, while editor module just reads them
and updates the state of own settings, like colorings, keybidings.
What are the time estimates of the work?
The cvs/editor/settings/storage module is currently maintained
under editor_api branch of the editor module.
How will the quality
of your code be tested and
how are future regressions going to be prevented?
The unit tests are already available in cvs/editor/settings/storage/test under
editor_api branch of the editor module. Tests cover storing and reading the settings from the storage and
settings change event firing.
Where one can find sources for your module?
WARNING: Question with id="arch-where" has not been answered!
Project and platform dependencies
Do you deploy just module JAR file(s) or other files as well?
No additional files.
Can you deploy an NBM via the Update Center?
Do you need to be installed in the shared location only, or in the user directory only,
or can your module be installed anywhere?
Are packages of your module made inaccessible by not declaring them
Yes, only the API is public.
What do other modules need to do to declare a dependency on this one?
OpenIDE-Module-Module-Dependencies: org.netbeans.modules.editor.settings.storage/1 > @SPECIFICATION-VERSION@
Compatibility with environment
Is your module correctly internationalized?
Does the module implement or define any standards? Is the
implementation exact or does it deviate somehow?
Compatible with standards.
Can your module coexist with earlier and future
versions of itself? Can you correctly read all old settings? Will future
versions be able to read your current settings? Can you read
or politely ignore settings stored by a future version?
editor/settings/storage module provides a support of storing the settings and it will
be able to read old settings as well as future versions will be able to read current settings.
Settings are stored as the diffs against default values.
Access to resources
Does your module use
Does your module provide own layer? Does it create any files or
folders in it? What it is trying to communicate by that and with which
Does your module read any resources from layers? For what purpose?
Does your module mask/hide/override any resources provided by other modules in
Lookup of components
Does your module use
or any similar technology to find any components to communicate with? Which ones?
Yes. module creates a new MimeLookupInitializer and plug it into the MimeLookup. Also EditorSettings
implementation is registered into default lookup.
Do you register anything into lookup for other code to find?
Yes. Implementation of MimeLookupInitializer and EditorSettings is registered via META-INF/services.
Do you remove entries of other modules from lookup?
Format of files and protocols
Which protocols and file formats (if any) does your module read or write on disk,
or transmit or receive over the network? Do you generate an ant build script?
Can it be edited and modified?
XML files are read and written on disk.
Which protocols (if any) does your code understand during Drag & Drop?
Which data flavors (if any) does your code read from or insert to
the clipboard (by access to clipboard on means calling methods on
No clipboard support.
Performance and Scalability
Does your module run any code on startup?
Does your module run any code on exit?
Which external criteria influence the performance of your
program (size of file in editor, number of files in menu,
in source directory, etc.) and how well your code scales?
There is no performance sensitive code in editor/settings/storage module.
Are there any hard-coded or practical limits in the number or size of
elements your code can handle?
How much memory does your component consume? Estimate
with a relation to the number of windows, etc.
No specific memory usage.
Does any piece of your code wake up periodically and do something
even when the system is otherwise idle (no user interaction)?
Does your module execute any long-running tasks?
Does your module contain any dialogs or wizards with a large number of
GUI controls such as combo boxes, lists, trees, or text areas?
Does your module use dynamically updated context menus, or
context-sensitive actions with complicated and slow enablement logic?
How the performance of the plugged in code will be enforced?
No pluggins allowad.