Options Dialog and SPI
Official
See:
Description
Options Dialog module contains implementation of Options Dialog and simple SPI. This SPI allows
installation of custom options panels / categories to Options Dialog.
This module contains implementation of Miscellaneous Panel ans Miscellaneous Panel SPI too.
OptionsDialogSPI
- Sep 14 '09 Annotations to register dialog panels
Introduced three annotations inside OptionsPanelController
to register Options dialog panels declaratively.
- Mar 30 '09 "Classic" mode fully implemented in module
The Advanced Options button (also known as "classic" mode) is
now fully implemented in the Options Dialog and SPI module, rather
than in Core. The functionality remains the same: any displayable
objects (such as beans) present under the UI/Services
configuration folder will trigger the button to be displayed which
opens a special dialog for them.
- Jul 17 '08 Support for searchable options
Added new declarative way of registering options categories
(advancedOptionFolder attr in layer.xml), in order to remove
duplicate tabbed controllers for each category with subtabs
- Jul 11 '08 Support for searchable options
Added new factory methods enabling declarative loading of option
panels (createCategory and createSubCategory) to OptionsCategory
and AdvancedOption
- May 28 '08 API to open the options dialog with some subcategory pre-selected
Added API to open the options dialog with some subcategory pre-selected.
Use Cases
Register top level Options Panel
Client can install new panel to Options Dialog - see JavaDoc for OptionsCategory class.
Register panel to Advanced Options Panel
Client can install new panel to Advanced Options Panel - see JavaDoc for AdvancedOption class.
Exported Interfaces
This table lists all of the module exported APIs
with
defined stability classifications. It is generated
based on answers to questions about the architecture
of the module. Read them all...
Group of java interfaces
Group of property interfaces
Interface Name |
In/Out |
Stability |
Specified in What Document? |
|
Group of layer interfaces
Interface Name |
In/Out |
Stability |
Specified in What Document? |
OptionsDialogSPILayers |
Exported |
Under Development |
.../spi/options/OptionsCategory.html
Use OptionsDialog folder for registration of custom top level options panels. Register
your implementation of OptionsCategory there (*.instance file). Standard
file systems sorting mechanism is used.
|
AdvancedPanelSPILayers |
Exported |
Under Development |
.../netbeans/spi/options/AdvancedOption.html
Use OptionsDialog/Advanced folder for registration of custom panels to Miscellaneous Panel. Register
your implementation of AdvancedCategory there (*.instance file). Standard
file systems sorting mechanism is used.
|
OptionsExportLayers |
Exported |
Under Development |
Use OptionsExport/<MyCategory> folder for registration of items for export/import
of options. Registration in layers looks as follows
<folder name="OptionsExport">
<!-- category -->
<folder name="MyCategory">
<!-- category display name -->
<attr name="displayName"
bundlevalue="org.netbeans.modules.mymodule.options.Bundle#Category_Display_Name"/>
<!-- item -->
<file name="MyItem1">
<attr name="displayName" bundlevalue="org.netbeans.modules.mymodule.options.Bundle#Item1_Display_Name"/>
<!-- include regex pattern rooted to userdir -->
<attr name="include" stringvalue="config/Preferences/org/netbeans/modules/mymodule/.*|config/mymodule/.*"/>
<!-- exclude regex pattern rooted to userdir -->
<attr name="exclude" stringvalue="config/mymodule/obsolete/.*"/>
</file>
<!-- item -->
<file name="MyItem2">
<attr name="displayName" bundlevalue="org.netbeans.modules.mymodule.options.Bundle#Item2_Display_Name"/>
<!-- include pattern with properties constrain -->
<attr name="include" stringvalue="config/mymodule[.]properties#key[1-9].*|keyA.*#|config/mymodule[.]xml"/>
<!-- exclude pattern with properties constrain -->
<attr name="exclude" stringvalue="config/obsolete[.]properties#key5"/>
</file>
</folder>
</folder>
Include/exclude patterns may contain either a regular expression defining
files relatively to userdir (see MyItem1) or a compound pattern defining
files and property keys (see MyItem2). A compound pattern consists of
file regex pattern followed by hash delimiter (#) then property key
regex pattern followed by another hash delimiter. Hash delimiter can be
ommited at the end of compound pattern. For example, a compound pattern
can have the following structure
filePattern1#keyPattern1#|filePattern2|filePattern3#keyPattern3 .
|
|
Implementation Details
Where are the sources for the module?
The sources for the module are in the
NetBeans Mercurial repositories.
What do other modules need to do to declare a dependency on this one, in addition to or instead of a plain module dependency?
Nothing.
Read more about the implementation in the answers to
architecture questions.