Ant
javadoc |
download
|
architecture
|
usecases
The Ant integration module recognizes Ant build scripts, facilitates
editing them as text or structurally, lets the user run targets or
create shortcuts to them, etc.
Debugger Core API
javadoc |
download
|
architecture
|
usecases
The debuggercore/api module (Debugger Core API) allows to install different debugger implementation to one IDE.
It allows to share some common UI components.
HTML UI API
javadoc |
download
|
architecture
|
usecases
NetBeans Platform specific bindings over
standard HTML for Java API.
Usage:
The HTML for Java & NetBeans API is a classical NetBeans module. However
it depends on other modules provided by the
HTML for Java
project and those are OSGi bundles. As such, when one decides to use this
module, one needs to turn on an OSGi container inside of the NetBeans Platform.
It can be either Felix or
NetBeans version of Equinox.
Interface Name | Stability Classification | Specified in What Document? |
HTMLUI | Official |
NetBeans Platform specific bindings over
standard HTML for Java API.
|
|
Intent API
javadoc |
download
|
architecture
|
usecases
This module provides a contract between API clients that can express
some intention to invoke an operation and SPI providers that can
handle that intention.
This is useful in client-server environments, where the intention
can be constructed on server-side, but handled on client-side. The
objects that describe the intention should be easy to construct,
transfer and interpret.
Usage:
Standard module dependency is sufficient.
I/O API and SPI
javadoc |
download
|
architecture
|
usecases
The Input/Output API and SPI is a small module
which contains InputOutput and related interfaces used in
driving the Output Window.
The normal implementation is org.netbeans.core.output2.
Usage:
Normal module dependency is enough.
Availability of some implementation of the SPI is guaranteed by
"OpenIDE-Module-Needs: org.netbeans.spi.io.InputOutputProvider" in
the manifest of this module.
Java Support APIs
javadoc |
download
|
architecture
|
usecases
Provides java specific queries (javadc, source level) used by other modules like java language infrastructure.
More information in the Javadoc.
Interface Name | Stability Classification | Specified in What Document? |
JavaSupportAPIs | Official |
The Java Support APIs provides basic facilities for getting or supplying
information about Java-language source files. It is based on the query pattern
so implementations can be supplied from other modules or projects.
|
|
Classpath APIs
javadoc |
download
|
architecture
|
usecases
Models basic aspects of the metadata surrounding list of source roots, such as
the classpath. More information in the Javadoc.
Interface Name | Stability Classification | Specified in What Document? |
ClassPathAPIs | Official |
The ClassPath APIs provides java classpath like ordered collection of (source)
roots with ability to listen on changes and helper methods like finding the file
under the roots, returning a path from root to given file. It also provides a
registry where projects register their classpaths to make them visible to languages
infrastructure.
|
|
LSP APIs
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
LanguageServerAPIs | Official |
The Lanugage Server APIs provides basic facilities for getting or supplying
information used by language server implementations.
|
|
Scripting API Wrapper
javadoc |
download
|
architecture
|
usecases
NetBeans specific extensions to JDK's Scripting API can be found in this
module.
Usage:
XXX no answer for deploy-dependencies
Search API
javadoc |
download
|
architecture
|
usecases
This project is good for implementators of nodes to define how files
under this node should be searched. For example, if you implement a
custom project type, you can define which folders should be searched
when the project is in the current search scope.
It is also good for people who want to add a custom tab into the
"Search in projects" dialog. For example, implementators of platform
applications can add form with criteria for searching in a database.
Usage:
No extra declaration is required.
Interface Name | Stability Classification | Specified in What Document? |
SearchInfoSPI | Stable | org-netbeans-api-search/org/netbeans/spi/search/package-summary.html
Defines abstract classes
SearchInfoDefinition ,
SearchFilterDefinition ,
SubTreeSearchOptions
and a factory class
SearchInfoDefinitionFactory
|
SearchProviderSPI | Stable | org-netbeans-api-search/org/netbeans/spi/search/provider/package-summary.html
Defines abstract classes that need to be implemented when
creating custom providers:
SearchProvider ,
SearchProvider.Presenter ,
SearchResultsDisplayer ,
SearchComposition
and relative classes.
|
SearchProviderAPI | Stable | org-netbeans-api-search/org/netbeans/api/search/provider/package-summary.html
Classes usually used by search providers.
Contains class SearchInfo ,
that defines which files should be searched (it can be retrieved from methods in
SearchInfoUtils ,
or UI component controller ScopeController ),
SearchListener
that you should inform about events that happen during searching, and helper classes
SearchInfoUtils
(getting SearchInfo objects for nodes) and
FileNameMatcher
(filtering files by file name).
|
SearchProviderUIAPI | Stable | org-netbeans-api-search/org/netbeans/api/search/ui/package-summary.html
Several UI components that can be used in presenters of search
providers, and factory method for creating them.
|
SearchAPI | Stable | org-netbeans-api-search/org/netbeans/api/search/package-summary.html
Contains classes for controlling search, passing search
criteria, and some helper classes.
|
|
File Templates
javadoc |
download
|
architecture
|
usecases
This utility standardizes the process to use files as blueprints to create new files.
Usage:
No specific deploy dependencies.
Visual Library API
javadoc |
download
|
architecture
|
usecases
The Visual Library 2.0 is the next generation of the original Graph Library 1.0.
It is designed for a general visualization with a support for graph-oriented modeling.
Its focus is to become a part of the NetBeans platform and unify the visualization (UI and API) used in NetBeans-Platform-based applications.
See https://netbeans.apache.org/front/main/projects/graph/ web-site for details.
See documentation for complete set of use-cases and code-snippets.
Usage:
No. Just set a normal project dependency on org.netbeans.api.visual (spec no.: 2.0) module.
Interface Name | Stability Classification | Specified in What Document? |
VisualLibraryAPI | Official |
The API provides a set of reusable pieces - widgets. By composing them you are creating a visualization.
Each widget has various properties including layout, border, assigned actions, ... The library contains a set of pre-defined widgets that can be extended.
All pluggable pieces are declared as interfaces or abstract classes - WidgetAction, Anchor, AnchorShape, PointShape, Animator, Border,
GraphLayout, LookFeel, Layout, SceneLayout, Router, CollisionsCollector.
Also they all have their built-in implementation.
|
|
Web APIs
javadoc |
download
|
architecture
|
usecases
There are multiple IDE modules that need access to definition of web module.
On one side there are modules that provide wizards, edititing, debugging etc.
for JSPs, web.xml, servlets, and similar. On the other side there are also
multiple project types that can contain web modules in them.
This API/SPI exists for communication between these two types of modules.
Interface Name | Stability Classification | Specified in What Document? |
WebModuleAPI | Under Development |
The API part provides access to web module properties and defines constants for use
web module projects (such as action commands or source types).
The SPI part can be implemented by modules that provide web module "project" support.
It can be implemented with project APIs but other implementations are also possible.
There is also an SPI which allows implementors to provides support for web frameworks
such as Struts and JSF.
|
|
Bootstrap
javadoc |
download
|
architecture
|
usecases
The NetBeans launcher starts the application. Different launchers are
provided for different supported platforms - Unix/Linux, Windows, and
others. There are also a handful of classes in the
org.netbeans and org.netbeans.core packages
which directly support early startup features, such as command-line
options.
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
ExceptionAnnotatableUsingLogRecords | Friend |
To support classification of exceptions and also annotation of
exceptions with logging levels and additional localized messages,
logged exceptions and their initCause's are searched for
implementation of Callable<LogRecord[]> .
If an exception implements this interface, the call()
method is called and returned LogRecords then
scanned for messages, levels, etc.
|
|
MultiView Windows
javadoc |
download
|
architecture
|
usecases
Multi views are general mechanism for displaying several perspectives, or views of data,
which will be used consistently across whole IDE window system. Using multi views
will enable modules to visually represent data document or object in unified manner
at one specific place in the system, yet still allowing for different perspectives
of data viewing.
NetBeans OSGi Integration
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
Netigso | Under Development |
the heart of NetBeans integration with
OSGi with NetBeans module
system is contained in this module. This module locates the OSGi framework
implmentation and is then responsible for finding,
registering and starting OSGi bundles provided by the NetBeans module system.
|
|
Core Network
javadoc |
download
|
architecture
|
usecases
The Core Network module provide ProxySelector as well as utilities related
to network connections.
Usage:
XXX no answer for deploy-dependencies
Startup
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
|
V8 Debugging Protocol Library
javadoc |
download
|
architecture
|
usecases
This library is a Java implementation of V8 debugging protocol.
Provides v8debugLib
Usage:
This module does not have any additional dependencies.
Git Library API
javadoc |
download
|
architecture
|
usecases
The library provides a Java implementation of git client allowing you to work with and get information about Git repositories and run Git commands.
Usage:
No additional setting is needed, direct dependency is enough.
Interface Name | Stability Classification | Specified in What Document? |
GitlibraryAPI | Under Development |
Allows clients to work with local Git repositories and invoke a set of Git commands affecting a Git repository.
|
|
GraalVM SDK API
javadoc |
download
|
architecture
|
usecases
Bridge that plugs
GraalVM languages
into
Scripting.createManager()
can be found in this module.
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
org.graalvm.polyglot.wrapper | Stable |
This module re-exports all found GraalVM languages under
GraalVM:lang name and makes them accessible via
NetBeans Scripting
API.
|
org.graalvm.polyglot | Third party |
This module re-exports org.graalvm.polyglot APIs.
Use them to obtain access to the GraalVM directly, if you only
want to work with them and generic
Scripting
wrapper isn't enough.
|
|
Auto Update UI
javadoc |
download
|
architecture
|
usecases
This module exposes bits of its UI and user related workflow actions
(related to installing, upgrading, etc.) by providing an API calls
for other modules to invoke bits of here-in available functionality.
Usage:
You modules can use the AutoUpdateUI
API directly (of course
you almost certainly need also
Autoudate Services), just be aware that this module comes with a UI.
It is not always practical to depend on modules that provide a UI from
low level infrastructure modules - if that is your case, consider separating
calls to AutoUpdateUI
into separate
bridge module.
Issue Tracking
javadoc |
download
|
architecture
|
usecases
The module allows to integrate Bugtracking systems into the IDE workflow.
Usage:
No special requirements here.
Interface Name | Stability Classification | Specified in What Document? |
BugrackingSPI | Under Development |
Enables Bugtracking modules to fully integrate into Bugtracking Issue Management facilities
and other IDE workflow.
|
BugrackingAPI | Under Development |
Provides Bugtracking functionality for other subsystems in the IDE.
|
|
Classfile Reader
javadoc |
download
|
architecture
|
usecases
The ClassFile API is designed as a fast, low memory-cost way to access classfile
information. It is useful for tools and modules that directly read classfiles,
such as the clazz and javacore modules.
Interface Name | Stability Classification | Specified in What Document? |
classfile | Stable |
|
|
Database Explorer
javadoc |
download
|
architecture
|
usecases
This project provides access to objects defined in the Database Explorer.
Documentation is available in the Javadoc.
Diff
javadoc |
download
|
architecture
|
usecases
The diff module provides the ability to visualize differences between source files.
It also has a graphical conflicts resolver tool and built-in patch algorithm.
List of the main features:
Simple APIs, that provide access to registered diff and merge engines and visualizers.
Built in and external diff engines defined.
Graphical diff vizualizer and conflicts resolver.
Extensible with additional diff and merge engines and vizualizers.
Patch algorithm implemented for UNIX-style, unidiff and contextual diff formats.
Editor Module
javadoc |
download
|
architecture
|
usecases
The editor module provides a full-featured source text editor
that is integrated with the Form Editor, Explorer, compiler, and debugger.
List of the main features:
Syntax highlighting of java, HTML, XML and other languages.
Code Completion enables to type a few characters
and then display a list of suggestions appropriate
in the given context that can be then used
to automatically complete the expression.
Word Matching enables enables to type the beginning characters
of a word used elsewhere in the code and then have the editor
generate the rest of the word.
Abbreviations allow to expand typed text from a few
predefined characters into a full word or phrase.
Goto Class enables to open a Java file in the Source Editor
by typing only the class name.
The IDE helps to identify the correct package name for the class.
The Fast Import feature enables to quickly add import statements
for Java classes in the source file.
Goto Declaration feature allows to quickly jump to a declaration
of a variable under the cursor.
Goto Source allows to open source file containing
definition of a type that the variable under the cursor is of.
Code folding allows to collapse sections of the code that are
unimportant to the user at the given time.
For example in java source the collapsable sections include
imports section, inner classes, methods and javadocs.
Interface Name | Stability Classification | Specified in What Document? |
EditorModuleAPI | Under Development |
Editor defines APIs and SPIs both by
-
Providing java classes in public packages for further reuse.
Most of the classes were created spontaneously (several years ago)
without fulfilling of the rules imposed on APIs and SPIs
at the present time.
There is an ongoing work to revisit the existing classes
and create stable APIs and SPIs (and possibly extract functionality
into a submodule where appropriate). However this is a long-term
task spanning several promotions.
- Being sensitive to content of certain directories in xml layer.
|
|
Editor Braces Matching
javadoc |
download
|
architecture
|
usecases
The Braces Matching SPI allows modules providing editor support for documents
to create their own BracesMatchers that are tailored for the type of documents they
support. The module itself provides an infrastructure for
highlighting matching areas identified by a matcher and navigating between them.
Usage:
Just normal module dependency.
Editor Code Templates
javadoc |
download
|
architecture
|
usecases
Code Templates allow to paste various code snippets by using parametrized text.
The parameters of the same name will share the same default value and if that value
gets changed by user's typing the new value gets replicated into all the parameter's
occurrences.
Code Templates replace the original abbreviations functionality.
Code template's example
for (Iterator ${iterator} = ${collection instanceof="java.util.Collection"}.iterator(); ${iterator}.hasNext();) {
${cursor}${iterator}.next();"
}
Each parameter can have additional hints of what values
can be assigned to it.
The hint has a form
${param hint=value}
or just
${param hint}
which translates to
${param hint="true"}
If necessary the value of the hint can be enclosed
in quotes to allow to write whitespace or { or }
into the value. The quote can be written by using \".
Reserved parameter names
${cursor} defines position where the caret will be located
after the editing of the code template default values will finish.
Reserved hint names
${param editable=false} can be used to make the parameter to be skipped
from user's editing. This may be useful e.g. with using java-specific type
hint (described below).
Java:
${ind index} defines that the default value of the parameter
should be an unused variable in the given context named i.
If i is already used then j is attempted
or then k etc. until z.
Then i0, i1 etc. are attempted.
${param type="java.util.Collection"} defines
java type that the parameter must be instance of.
Besides class names there can be array e.g. String[]
or generics java.util.List<String>
${param array} defines parameter of array type (including
arrays of primitive data types).
${param type="java.util.Iterator"} defines
that the parameter has the given java type. The template processing infrastructure
will use short name Iterator and import java.util.Iterator.
Editor Code Completion
javadoc |
download
|
architecture
|
usecases
Code Completion provides users with a list of suggested completions for partially typed texts in the editor and various dialog input fields.
The Code Completion module was created to replace
the original legacy editor code completion which
lacked several key requirements:
Support for multiple independent code completion content providers.
Implied requirement for ordering and prioritization of the completion items.
Direct support for asynchronous completion result computation.
Missing separation to the API and SPI and implementation parts.
Editor Error Stripe
javadoc |
download
|
architecture
|
usecases
The Error Stripe shows an overview of important information of an edited source code.
It shows this information for the whole source code (regardless of its size).
Editor Code Folding
javadoc |
download
|
architecture
|
usecases
The Code Folding is part of the editor module functionality and it's responsible for hiding of the portions
of the code that are less important for the user at the given time.
Editor Guarded Sections
javadoc |
download
|
architecture
|
usecases
Guarded Sections protects user from modifying document content. The main goal is
to simplify work with such a content to module writers and preserve created
sections.
Usage:
A module using the Guarded Sections API should also require a proper
implementation. Eg in case of java content add to your module manifest file:
OpenIDE-Module-Requires: org.netbeans.api.editor.guards.Java
A module implementing the Guarded Sections SPI should provide a token in
the manifest file. Eg in case of java content add:
OpenIDE-Module-Provides: org.netbeans.api.editor.guards.Java
Editor Library
javadoc |
download
|
architecture
|
usecases
The editor library module provides subset of editor functionality independent
on the NetBeans IDE (except few specific standalone classes).
List of the main features:
Syntax highlighting of java, HTML, XML and other languages.
Code Completion enables to type a few characters
and then display a list of suggestions appropriate
in the given context that can be then used
to automatically complete the expression.
Word Matching enables enables to type the beginning characters
of a word used elsewhere in the code and then have the editor
generate the rest of the word.
Abbreviations allow to expand typed text from a few
predefined characters into a full word or phrase.
Goto Class enables to open a Java file in the Source Editor
by typing only the class name.
The IDE helps to identify the correct package name for the class.
The Fast Import feature enables to quickly add import statements
for Java classes in the source file.
Goto Declaration feature allows to quickly jump to a declaration
of a variable under the cursor.
Goto Source allows to open source file containing
definition of a type that the variable under the cursor is of.
Code folding allows to collapse sections of the code that are
unimportant to the user at the given time.
For example in java source the collapsable sections include
imports section, inner classes, methods and javadocs.
Interface Name | Stability Classification | Specified in What Document? |
EditorHyperlinkSPI | Under Development |
Hyperlink SPI in org.netbeans.lib.editor.hyperlink.spi
allows the editors for a particular mime-type to respond to the situation
when a user hovers over the text with a Ctrl key pressed.
|
EditorLibraryModuleAPI | Under Development |
Editor defines APIs and SPIs both by
-
Providing java classes in public packages for further reuse.
Most of the classes were created spontaneously (several years ago)
without fulfilling of the rules imposed on APIs and SPIs
at the present time.
There is an ongoing work to revisit the existing classes
and create stable APIs and SPIs (and possibly extract functionality
into a submodule where appropriate). However this is a long-term
task spanning several promotions.
- Being sensitive to content of certain directories in xml layer.
|
|
Editor Library 2
javadoc |
download
|
architecture
|
usecases
The Editor Library 2 module is a set of official APIs and SPIs, designed to
replaces the original Editor Library with legacy APIs
that are not properly structured and do not conform to the rules
implied on the current NB APIs.
The APIs currently offered in Editor Library 2 module include:
editor-code-generator
editor-highlighting
editor-typing-hooks
editor-caret
Usage:
Just normal module dependency.
MIME Lookup API
javadoc |
download
|
architecture
|
usecases
Each editor provides an EditorKit which controls the policy of specific MIME content type.
The policy of content type should be easily registered and found via some lookup mechanism,
that will provide convenient way of using it either for kit provider or base
editor infrastructure. In addition to this, the policy can be inherited, (e.g. in case of embeded
kits like JSP) and the content types need to be merged in this case. MIME Lookup API should
provide all mentioned requierements via easy lookup query, so content type policy
user need not to solve this searching and merging on its own side.
Editor Settings
javadoc |
download
|
architecture
|
usecases
The legacy settings system in the editor module is complicated, error prone
and hard to use. It'd been created spontaneously over the years to support
immediate needs at that time without paying enough attention to extensibility
and interoperability. Historically any module providing editor settings needed
to depend on the whole editor module.
The main purpose of this project is to define API for editor settings, that
is lightweight and easily extensible. The API relies on MimeLookup
to provide a way of registering and looking up settings.
The aim is NOT to provide an implementation of a storage for editor settings,
but to define an interface between this storage and clients
like <mime-type> editors, externaleditor, etc.
Editor Settings Storage
javadoc |
download
|
architecture
|
usecases
The module is an implementation of the
org.netbeans.modules.editor.settings
providing a settings storage on the default filesystem.
External Execution API
javadoc |
download
|
architecture
|
usecases
Provides common APIs to execute external process in the IDE to handle its
streams and present the output to the user. Input/line processing can be used
as separate part.
External Execution Base API
javadoc |
download
|
architecture
|
usecases
Provides common APIs to execute external process and to handle its
streams and process the output. Input/line processing can be used
as separate part.
J2EE DD API
javadoc |
download
|
architecture
|
usecases
The project is based on the requirement to access all J2ee deployment descriptor files
for other Netbeans modules in a simple and J2EE spec.-independant way. This module replaces
the Web DD API (web/ddapi) module form the Web area.
Interface Name | Stability Classification | Specified in What Document? |
J2EEDDAPI | Friend | index.html
The J2EE DD API is based on a bunch of interfaces based on the deployment descriptor xml structure. The names of interfaces correspond to the names of deployment descriptor elements in the J2EE DD files like ejb-jar.xml, web.xml or applicaiton.xml.
The DD API interfaces are organized in a hierarchic tree structure and are accassible through the root (Application), (WebApp) or (EjbJar) interfaces.
The implementation of DD API interfaces is hidden for clients. It is based on schema2beans infrastructure and is the DD version - specific.
(there is always requirement to support at least two successive versions of DD specification).
The implementation is located in non-public packages of j2ee/ddapi module.
It is expected that interfaces will not be implemented by the client.
The root of the deployment descriptor is accessible through the DDProvider class.
|
|
Java EE Server Registry
javadoc |
download
|
architecture
|
usecases
J2EE Server Module provides support for development of J2EE modules and framework for J2EE server management and for J2EE deployment in IDE.
Usage:
Tomcat plugin (org.netbeans.modules.tomcat5), Web Core (org.netbeans.modules.web.core), Web Projects (org.netbeans.modules.web.project).
Interface Name | Stability Classification | Specified in What Document? |
J2EEServer-devmodules | Friend |
The spi classes are to be subclassed by dev modules and to be provided
as cookies on the development nodes. The api classes are to be used to
add actions/properties/additional cookies to those nodes.
|
J2EEServerAPI | Friend |
J2EE Server module serves as an integration point between two kinds of netbeans modules:
-
server plugins (or simply plugins) that integrate various J2EE servers in IDE
-
devmodules - netbeans modules that provide support for development
of J2EE modules (web module, EJB module, J2EE Application, etc.) and need to deploy
and debug them on J2EE servers.
|
|
javadoc |
download
|
architecture
|
usecases
Defines the Java platform type for J2SE (plain JDKs), and the plain Java
library type. UI specifications:
J2SE-specific portion of Java
Platform Manager.
Class-library-specific portion of Library
Manager.
Java SE Projects
javadoc |
download
|
architecture
|
usecases
Provides a project type for plain Java projects. J2SE projects can be created
from scratch, or you can import existing Java source trees. Creates an Ant
script letting you build the project (and subprojects), run it, debug it, run
JUnit-format tests, and build Javadoc. GUI customizer permits easy
customization of the most commonly needed project parameters. Provides code
completion and other services for editing Java sources. Classpaths can include
other projects, raw JARs, or configured libraries. Specific J2SE platforms may
be configured.
Interface Name | Stability Classification | Specified in What Document? |
J2SEPropertyEvaluator | Friend |
Module provides public package org.netbeans.modules.java.j2seproject.api with
interface for resolving values of project properties defined in project.properties and private.properties files.
|
|
javadoc |
download
|
architecture
|
usecases
Many Java-based project types need to be able to configure the version and
location of Java to be used when building and running the project. This
API/SPI permits these platforms to be registered and queried, and any
customizations made in an appropriate GUI and persisted to disk.
Interface Name | Stability Classification | Specified in What Document? |
JavaPlatformAPI | Official |
The Java Platform API permits access to installed Java platforms (for example,
the J2SE JDK, or various mobile-device emulators for J2ME). Particular platform
types are registered by modules and can store customized information about the
platform to disk.
Note that this module concentrates the part of th API which is independent of
the client desktop (and Swing UI library) environment. Its desktop-dependent counterpart
is in the
org.netbeans.modules.java.platform.ui module.
|
|
javadoc |
download
|
architecture
|
usecases
Many Java-based project types need to be able to configure the version and
location of Java to be used when building and running the project. This
API/SPI permits these platforms to be registered and queried, and any
customizations made in an appropriate GUI and persisted to disk.
Interface Name | Stability Classification | Specified in What Document? |
JavaPlatformUI | Official |
The Java Platform API permits access to installed Java platforms (for example,
the J2SE JDK, or various mobile-device emulators for J2ME). Particular platform
types are registered by modules and can store customized information about the
platform to disk.
Note that this module concentrates the UI part of API. Its desktop-independent counterpart
is in the
org.netbeans.modules.java.platform module.
|
|
Java Project Support
javadoc |
download
|
architecture
|
usecases
Provides support infrastructure for projects working with the Java language.
Interface Name | Stability Classification | Specified in What Document? |
JavaProjectAPI | Official |
The Java Project API is actually entirely SPI and supplies useful
implementations of Java-related functionality specific to the project system.
|
ProjectClassPathExtender | Under Development |
Implemented by java/j2seproject and asked for by
form . Permits the Form Editor to add JavaBeans archives to the
classpath of a J2SE project automatically.
|
ProjectClassPathSupport | Under Development |
Support class containg helper method for creating ClassPathImplementation based on Ant
properties.
|
|
Java Project Support UI
javadoc |
download
|
architecture
|
usecases
Provides support infrastructure for projects working with the Java language.
Interface Name | Stability Classification | Specified in What Document? |
JavaProjectUI | Official |
The Java Project API is actually entirely SPI and supplies useful
implementations of Java-related functionality specific to the project system. This module
focuses on Swing UI components.
|
JavaPackageChooser | Friend |
Templatesui module is using reflection to access
JavaTemplates class from this module
in order to
create Java-like package chooser.
|
|
Java Source
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
|
Java Source Base
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
JavaSourceAPI | Official |
When the ensure.built.source.roots property is set during ant script execution,
the javac task will not actually build the classfiles from scratch, but rather copy classfiles
produced by the Java infrastructure into the output folder. The content of the property will
be interpreted as list of source roots, for which the artifacts should be copied.
|
|
JavaHelp Integration
javadoc |
download
|
architecture
The JavaHelp integration API wraps the standard JavaHelp extension
library. It also provides a small additional API for NetBeans modules to
supply help sets to the system, add GUI menu items, and request that
particular help topics be displayed.
JavaHelpIntegrationAPI
JUnit Tests
javadoc |
download
|
architecture
|
usecases
The module makes creating, running and navigation between tests easier.
(Actual test running is typically performed directly by a
project type provider using Ant.)
Interface Name | Stability Classification | Specified in What Document? |
org.netbeans.modules.junit.plugin | Under Development |
This SPI describes services provided by the
custom JUnit support plugin which are not desribed by the existing
public SPI (UnitTestForSourceQuery ). This SPI
represents an additional source of information for the JUnit module
and allows a custom test-skeleton generator to be plugged.
|
|
Keyring API
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
Keyring-API | Official |
Other modules can access the keyring, or add implementations.
|
|
Lexer
javadoc |
download
|
architecture
|
usecases
Lexer module provides token lists for various
text inputs. Token lists can either be flat or they can form
tree token hierarchies if any language embedding is present.
Tokens
Usage:
OpenIDE-Module-Module-Dependencies: org.netbeans.modules.lexer/2 > @SPECIFICATION-VERSION@
Interface Name | Stability Classification | Specified in What Document? |
LexerAPI | Official | |
|
Master Filesystem
javadoc |
download
|
architecture
|
usecases
MasterFileSystems is just implementation of FileSystem provided in standalone
module including implementation of URLMapper that resolves file protocol and
is responsible for conversion from URL into FileObject and vice versa.
Implementation just delegates to the other FileSystem implementations
(LocalFileSystem, VCSFileSystem, ...) and playes the role of arbiter that controls
instantiation and life cycle of provided FileObjects.
MasterFileSystemAPI
Usage:
Nothing currently. Most "clients" are really callers of
FileUtil.toFileObject
and so on, and thus
implicitly depend on the existence of this module. In the
future a provide-require token might make sense.
Ant-Based Project Support
javadoc |
download
|
architecture
|
usecases
Provides the basic infrastructure by which Ant-based projects can be created,
read and write configuration parameters and properties from/to disk, satisfy
common queries and interfaces, etc. See Javadoc and build system design
document.
Interface Name | Stability Classification | Specified in What Document? |
AntProjectAPI | Official |
Mostly an SPI for creating project types centered around the Ant build tool.
Permits Ant-based project types to be registered and supplies various support
implementations to help satisfy the contract of Project and
various optional interfaces.
|
|
Ant-Based Project Support UI
javadoc |
download
|
architecture
|
usecases
Provides the basic infrastructure by which Ant-based projects can be created,
read and write configuration parameters and properties from/to disk, satisfy
common queries and interfaces, etc. See Javadoc and build system design
document.
Interface Name | Stability Classification | Specified in What Document? |
AntProjectUI | Official |
Mostly an SPI for creating project types centered around the Ant build tool.
Permits Ant-based project types to be registered and supplies various support
implementations to help satisfy the contract of Project and
various optional interfaces.
|
|
External Libraries
javadoc |
download
|
architecture
|
usecases
Permits libraries to be defined, customized, and stored by the user for
reuse in multiple projects. For example, a Java JAR library has a classpath
(usually one JAR), and an optional source path and Javadoc path that may be
used for development-time features.
Interface Name | Stability Classification | Specified in What Document? |
ProjectLibrariesAPI | Official |
The Project Libraries API permits definitions of libraries to be
registered and persisted. Library type providers may be registered and can
construct memory objects corresponding to persistent library definitions.
|
|
Project API
javadoc |
download
|
architecture
|
usecases
Provides a generic infrastructure for modelling projects.
Documentation available in the Javadoc. The build system design overview
describes the basic purpose of modelling projects.
Interface Name | Stability Classification | Specified in What Document? |
ProjectAPI | Official |
The Project API defines abstract projects. These are groupings of files built and
manipulated as units. It is used for Ant-based projects but could support
other scenarios such as makefiles. Modules can plug in project types which can
recognize certain folders as being projects, and define their behaviors.
Besides the visible Javadoc, this module permits a project to add implementations
of org.netbeans.spi.queries.FileBuiltQueryImplementation ,
org.netbeans.spi.queries.SharabilityQueryImplementation and
org.netbeans.spi.queries.FileEncodingQueryImplementation
into the project lookup (rather than global lookup).
The implementations will be consulted only in the case the relevant file
belongs to that project (according to org.netbeans.api.project.FileOwnerQuery ).
This helps avoid the need to consult irrelevant query implementations.
|
|
Project UI API
javadoc |
download
|
architecture
|
usecases
The module supplies the APIs for the basic, generic UI infrastructure for
projects: list of opened projects, main project, basic project-sensitive
actions, template wizards, etc.
Interface Name | Stability Classification | Specified in What Document? |
ProjectUIAPI | Official |
The Project UI API provides some miscellaneous APIs and SPIs relating to the
appearance and UI behavior of generic projects. Most importantly, it permits
the customizer and logical view of a project to be defined.
|
ProjectUIAPI-provider | Friend |
Callbacks intended to let the Project UI module plug in implementations of
APIs defined here. Uses implementation dependencies.
|
|
Base Project UI API
javadoc |
download
|
architecture
|
usecases
The module supplies the APIs for the basic, generic UI infrastructure for
projects: list of opened projects, main project, basic project-sensitive
actions, template wizards, etc.
Interface Name | Stability Classification | Specified in What Document? |
BaseProjectUIAPI | Official |
The Project UI API provides some miscellaneous APIs and SPIs relating to the
appearance and UI behavior of generic projects. Most importantly, it permits
the customizer and logical view of a project to be defined.
|
BaseProjectUIAPI-provider | Friend |
Callbacks intended to let the Project UI module plug in implementations of
APIs defined here. Uses implementation dependencies.
|
|
General Queries API
javadoc |
download
|
architecture
|
usecases
General kinds of queries between modules.
Queries are one way of solving the
intermodule communication problem when it is necessary for some modules to
obtain basic information about the system (e.g. whether a particular file is
intended for version control) without needing direct dependencies on the
module providing the answer (e.g. the project type which controls the file).
Details are covered in the Javadoc.
Interface Name | Stability Classification | Specified in What Document? |
GeneralQueriesAPI | Official |
The General Queries API provides generic queries , or sources of
concrete information, useful throughout the build system and perhaps
elsewhere. Each query is split into an API component intended for clients to
find the answer to a particular question without knowledge of the underlying
structure or origin of the answer; and an SPI interface (using lookup)
permitting answers to be provided from any source. These queries currently
pertain to VCS and compilation status and user visibility of files.
|
|
Sampler API
javadoc |
download
|
architecture
|
usecases
It allows NetBeans Platform developer to self-sample their application,
which should provide them with a valuable information about CPU
performance problems.
Command Line Parsing API
javadoc |
download
|
architecture
|
usecases
GetOpts like infrastructure to parse command line arguments with the cooperative
participation of various modules.
Settings API
javadoc |
download
|
architecture
Settings are persistent objects with a set of properties, that should be available via lookup.
Properties are expected to be changed. Implementation of setting doesn't care about persistence issues, which
is responsibility of settings infrastructure. XML persistence support is provided in a standalone autoload module core-settings.jar.
Also service types must be mentioned here.
Service type can be desribed as typed a named settings.
SettingsAPI
ServicesAPI
XmlSettingsPersistence
UI Gestures Collector Infrastructure
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
Modules may use functionality of this module either by depending on its presence
and registering callback interfaces
provided by its API. Or the modules do not need to depend on this module at all,
and just generate log records
to the UI_LOGGER_NAME_VALUE+".someloggername"
logger. These records are
then going to be consumed by this module, if enabled.
Versioning
javadoc |
download
|
architecture
|
usecases
The module allows SCM systems to fully integrate into the IDE workflow.
Usage:
No special requirements here.
Interface Name | Stability Classification | Specified in What Document? |
VersioningSPI | Under Development |
Enables Source Code Management (SCM or Versioning) modules to fully integrate into the IDE workflow.
|
|
Versioning Core
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
No special requirements here.
Interface Name | Stability Classification | Specified in What Document? |
FSIndependentVersioningSPI | Friend |
Enables to fully integrate into the IDE workflow filesystem independent Source Code Management (SCM or Versioning) modules.
|
|
XML WSDL API
javadoc |
download
|
architecture
|
usecases
The WSDL model provides the ability to read, write, and extend documents
complying with the WSDL 1.1 specification.
Full document fidelty
Support for undo/redo
Support for sync which allow changes to be detected in
the underlying source and mutating the model to be compatible
Visitor support
Incorporation of the XAM locator for catalog based resolution
of referenced wsdl artifacts
Use of reference instead of raw URI to support retrieving the
actual component referenced instead of a URI
Support for generic and strongly typed extensibility elements
Usage:
The API's are currently exposed through the friend mechanism, thus another
module would need to be added to the friends list.
Interface Name | Stability Classification | Specified in What Document? |
wsdl.model | Friend |
This package provides API's for obtaining a wsdl model using the
factory pattern as well as reading and writing the wsdl structure.
This package is made up mostly of interfaces, which are not expected
to be implemented by the client. The entry point is the wsdl
model factory. The components are based on the structure of wsdl
and the names should reflect element and attribute names from the
specification.
|
wsdl.model.visitor | Friend |
Generic visitor pattern support (such as empty and deep visitors) as well
as visitors for finding usages.
|
wsdl.model.spi | Friend |
The SPI package provides the ability to plug-in strongly typed
extensibility elements, which are used in every concrete wsdl for bindings.
|
wsdl.model.extensions.soap | Friend |
Strongly typed extensibility elements for the SOAP binding.
|
wsdl.model.extensions.xsd | Friend |
Strongly typed extensibility element for Schema. This supports embedding
the schema model within the WSDL model to introspect the types section
of WSDL.
|
|
Extensible Abstract Model (XAM)
javadoc |
download
|
architecture
|
usecases
The xam module (XAM Module) provides a framework for domain model developers
to use when creating new models. This framework was started to encapsulate
common practices used when creating XML based models for XML schema and WSDL.
List of the main features:
Definition and partial implementation of both a generic and XML
specific model. The model supports eventing, Undo/Redo, sync, and
simple transactions. XML based models extend generic models and add support
for resolution.
Usage:
This module was developed from the bottom up (the api is not yet stable) and
thus a friend declaration is required before the module can be used.
Interface Name | Stability Classification | Specified in What Document? |
org.netbeans.modules.xml.xam | Under Development |
Represents a domain independent model and associated artifacts such as
a factory, source, and the concept of a reference.
|
org.netbeans.modules.xml.xam.dom | Under Development |
Provides entities for working on XML based models. This package
depends on org.w3c packages and assumes a mapping between an xml tree and a
strongly typed binding. This package also provides the ability to resolve other
models
|
|
XML Document Model (XDM)
javadoc |
download
|
architecture
|
usecases
The XDM module provides a basis for tool ready XML language models that require full
document fidelity, undo/redo, and the ability to sync with the underlying source.
List of the main features:
Support for full document fidelity. The users text including spacing and
comments are preserved.
Undo / Redo is supported using the concept of an immutable tree. XDM nodes
do not have parent pointers (only a pointer to the model). Thus a node can
be in multiple trees, where each tree is a version. When a mutation to the tree
occurs a clone is made of each node in the parent path from the root to the mutated
node. All unchanged nodes are simply referenced and thus will live in multiple
trees. Thus an undo / redo is simply a reference change. The cost of storing
multiple tree is minimized as only the diffs are stored in each version of the
tree.
The visitor pattern is used in addition to the DOM interfaces which allows
easier tree walking
An XML diff visitor supports XML difference. Element identity can be
supplied by the client.
Interface Name | Stability Classification | Specified in What Document? |
XDM | Under Development |
XDM (XML Document Model)
|
|
Debugger Core - UI
javadoc |
download
|
architecture
|
usecases
The debuggercore module (Debugger Core UI) contains shared UI components for all debugger implementations, and defines some SPI
for sharing of them.
Java Hints SPI
javadoc |
download
|
architecture
|
usecases
XXX no answer for arch-what
Usage:
XXX no answer for deploy-dependencies
Interface Name | Stability Classification | Specified in What Document? |
spi.java.hints | Under Development |
SPI to create custom Java hints, including code smell warnings, productivity tips, etc.
Please see the Use Cases section for a guide on how to use this SPI.
|
|
Navigator API
javadoc |
download
|
architecture
|
usecases
Navigator module is a base API module which provides:
A place for modules to show structure/outline of their documents
Ability for modules to show their view only when special document(node)
is active in the system
UI for switching between multiple views available for currently active document(node)
Coalescing of fast coming selected node changes to show content for
Common Palette
javadoc |
download
|
architecture
|
usecases
The project implements a new component palette that will be reused by other
projects. The new palette should provide a common look and feel for Form editor,
Mobility, J2EE and possible other modules as well.
UI draft specification is available at http://ui.netbeans.org/docs/ui/palette/index.html
Quick Search API
javadoc |
download
|
architecture
|
usecases
QuickSearch API and its implementations provides way for end user to learn
system earlier and easier and also to find various things in the system more
quickly, conveniently and in standard way.
Main project page is on nb wiki, http://wiki.netbeans.org/QuickSearch
Usage:
Nothing, regular depencency is enough.
Task List API
javadoc |
download
|
architecture
|
usecases
This module provides SPI for third parties that want to display some sort information for
the user in the Task List / Problems window. A typical example are Java errors, warnings, TODOs etc.
Part of the integration are several implementation modules that provider task list user interface,
TODO task scanning, Java integration.
Usage:
no special dependency declarations
Look & Feel Customization Library
javadoc |
download
|
architecture
|
usecases
The plaf library consists primarily of code that used to be in core. What it does:
Installs a custom look and feel if a custom look and feel class is passed to it
Sets the correct fonts in the Swing UIDefaults if a custom fontsize is desired for the application's UI
Loads a UI theme if a URL for the theme file (no format changes since NetBeans 3.4) is passed to it
Installs custom UI keys and values used by other components of NetBeans, such as colors and UI delegate class names used by
other parts NetBeans. Examples of these:
Tab control UI delegate class name, depending on the look and feel, for the window system
Definitions of colors which the tab control, property sheet and output window will use, if present in
UIDefaults, to color themselves in accordance with the UI spec for them on a given look and feel
Custom border implementations NetBeans uses for scroll panes to reduce "border-buildup"
A custom implementation of ToolbarUI which NetBeans uses for its toolbars, and a custom UI for
toolbar buttons which sizes them correctly (GTK and Aqua only, currently)
Insets definition for the editor scrollbar, used to get the height of the upper and lower button of the scrollbar
for purposes of the Error Stripe. The appropriate key value is "Nb.Editor.ErrorStripe.ScrollBar.Insets".
Compensate for missing elements on some (GTK) look and feels, which standard Swing code expects to be
present, i.e. UIManager.getColor ("control"), to enable older code to run unmodified on newer
look and feels.
Its API consists of a single method, org.netbeans.swing.plaf.Startup.run (Class lookAndFeel, int fontSize, URL themeFile),
which should be called early in NetBeans startup sequence by core, to initialize UIDefaults values before any main window
GUI is constructed. It provides a minimal SPI in the form of the abstract class LFCustoms, which an alternate look and
feel could use to provide lists of keys and values which should be installed into UIDefaults, via the mechanism documented
in the documentation for LFCustoms.
PlafAPI
Usage:
Components such as the window system, which use values defined here, will behave in a reasonable
way if those values are not defined. However, it is preferable that they declare a runtime
dependency on the plaf library.
Tab Control
javadoc |
download
|
architecture
|
usecases
The tab control is a swing control used by NetBeans window system, similar in function to a JTabbedPane, which
allows the user to see and select tabs that contain different components. It defines two GUI components:
TabbedContainer (similar to JTabbedPane) and TabDisplayer, a generic component for displaying tabs which
is not associated with any particular container. Several different types of UIs (view, editor, sliding)
are provided, each of which is handled by a different UI delegate class; UI delegate subclasses designed
to fit with Windows, Metal, Aqua and GTK look and feels are provided.
TabbedContainerAPI
PopupSwitcherAPI
Dialogs API
javadoc |
download
|
architecture
|
usecases
The
DialogsAPI
allows creating a user notification, a dialog's description
and also permits it to be displayed. The wizard framework allows create a sequence
of panels which leads a user through the steps to complete any task.
This API is part of package org.openide.
Execution API
javadoc |
download
|
architecture
The IDE uses a small interface to describe the execution of Java-based
classes together with arguments. The
ExecutionAPI
controls the execution
of user-level classes. The system may have several different types
of executors simultaneously installed. By default we provide so called
External Execution for running a user code by an external process and
Internal Execution for running the user code in the same virtual machine
as the IDE.
Explorer & Property Sheet API
javadoc |
download
|
architecture
|
usecases
The
ExplorerAPI
is build around Explorer - solely a user-interface device: it has no particular knowledge
of the structure of the IDE. Rather, it provides the physical user interface for
the Node hierarchy, as described in the
NodesAPI.
A given Explorer instance will be some visual component (such as a Swing panel)
displaying some representation of a subtree of the complete Node hierarchy;
the topmost node being displayed is said to be the root of the Explorer.
Be careful not to confuse the root of a particular Explorer instance, which is
selected according to what the user wishes to see, with the root(s) of
the entire Node hierarchy, which generally are fixed.
Usage:
XXX no answer for deploy-dependencies
File System API
javadoc |
download
|
architecture
|
usecases
The Filesystems API provides a common API to access files in a uniform manner.
It is available as standalone library and
also is bundled together with other parts of the openide.
Specification
Usage:
XXX no answer for deploy-dependencies
I/O APIs - Swing
javadoc |
download
|
architecture
|
usecases
The Input/Output API is a small API module
which contains InputOutput and related interfaces used in
driving the Output Window. The normal implementation is org.netbeans.core.output2.
Usage:
You will very likely also want to declare
OpenIDE-Module-Requires: org.openide.windows.IOProvider
to ensure that an Output Window implementation is in fact enabled.
Datasystems API
javadoc |
download
|
architecture
|
usecases
In summary, the LoadersAPI
is responsible for scanning files in a directory on disk,
weeding out irrelevant files of no interest to the IDE,
and grouping the rest into logical chunks, or just determining
what type of data each represents. It does this scanning by asking each registered
data loader whether or not the given file(s) should be handled. The first
loader to recognize a file takes ownership of it, and creates a matching data object to represent it to the rest of the IDE.
Usage:
XXX no answer for deploy-dependencies
Module System API
javadoc |
download
|
architecture
|
usecases
The Modules API lies at the core of NetBeans and describes how plug-in
modules are added and managed.
ModulesAPI
Nodes API
javadoc |
download
|
architecture
|
usecases
Nodes API serves as the main aparatus for visualisation of objects
in NetBeans. Nodes augment objects with standard aspects used for
visualisation (e.g. name, displayName, icons, set of proerties,
subnodes hierarchy, etc.) Once a Node is defined for given object
it can be visualised using diferent views e.g. trees, lists, tables etc.
Descripion of nodes can be found
here.
Text API
javadoc |
download
|
architecture
|
usecases
The EditorAPI is used for accessing editor-related functionality from within the IDE
for use by other modules and the core IDE itself.
Usage:
XXX no answer for deploy-dependencies
Window System API
javadoc |
download
|
architecture
|
usecases
Window System API is used to display and control application GUI: Main window,
frames, components.
Usage:
You might use OpenIDE-Module-Requires: org.openide.windows.WindowManager
but it is not generally done.
Deprecated, old search API
javadoc |
download
|
architecture
|
usecases
It allows other modules to define how the nodes they define should be
searched, without depending on any concrete module containing the search
feature.